本篇內(nèi)容介紹了“怎么用Python采集web質(zhì)量數(shù)據(jù)到Excel表”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
為景寧畬族自治等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及景寧畬族自治網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站建設(shè)、網(wǎng)站制作、景寧畬族自治網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
Python腳本編寫前的準(zhǔn)備:
下載pycurl模塊,直接雙擊安裝即可。
xlsxwriter使用pip命令安裝,此處需要注意環(huán)境變量是否配置。
1、由于pycurl是下載下來直接安裝的,這里就不寫了,比較簡單。
2、安裝xlsxwriter模塊(需可連接Internet)
3、采集數(shù)據(jù)的腳本如下:
# _._ coding:utf-8 _._ import os,sys import pycurl import xlsxwriter URL="www.baidu.com" #探測目標(biāo)的url,需要探測哪個(gè)目標(biāo),這里改哪個(gè)即可 c = pycurl.Curl() #創(chuàng)建一個(gè)curl對(duì)象 c.setopt(pycurl.URL, URL) #定義請(qǐng)求的url常量 c.setopt(pycurl.CONNECTTIMEOUT, 10) #定義請(qǐng)求連接的等待時(shí)間 c.setopt(pycurl.TIMEOUT, 10) #定義請(qǐng)求超時(shí)時(shí)間 c.setopt(pycurl.NOPROGRESS, 1) #屏蔽下載進(jìn)度條 c.setopt(pycurl.FORBID_REUSE, 1) #完成交互后強(qiáng)制斷開連接,不重用 c.setopt(pycurl.MAXREDIRS, 1) #指定HTTP重定向的最大數(shù)為1 c.setopt(pycurl.DNS_CACHE_TIMEOUT, 30) #創(chuàng)建一個(gè)文件對(duì)象,以’wb’方式打開,用來存儲(chǔ)返回的http頭部及頁面內(nèi)容 indexfile = open(os.path.dirname(os.path.realpath(__file__))+"/content.txt","wb") c.setopt(pycurl.WRITEHEADER, indexfile) #將返回的http頭部定向到indexfile文件 c.setopt(pycurl.WRITEDATA, indexfile) #將返回的html內(nèi)容定向到indexfile文件 c.perform() NAMELOOKUP_TIME = c.getinfo(c.NAMELOOKUP_TIME) #獲取DNS解析時(shí)間 CONNECT_TIME = c.getinfo(c.CONNECT_TIME) #獲取建立連接時(shí)間 TOTAL_TIME = c.getinfo(c.TOTAL_TIME) #獲取傳輸?shù)目倳r(shí)間 HTTP_CODE = c.getinfo(c.HTTP_CODE) #獲取HTTP狀態(tài)碼 SIZE_DOWNLOAD = c.getinfo(c.SIZE_DOWNLOAD) #獲取下載數(shù)據(jù)包大小 HEADER_SIZE = c.getinfo(c.HEADER_SIZE) #獲取HTTP頭部大小 SPEED_DOWNLOAD=c.getinfo(c.SPEED_DOWNLOAD) #獲取平均下載速度 print u"HTTP狀態(tài)碼: %s" %(HTTP_CODE) #輸出狀態(tài)碼 print u"DNS解析時(shí)間: %.2f ms" %(NAMELOOKUP_TIME*1000) #輸出DNS解析時(shí)間 print u"建立連接時(shí)間: %.2f ms" %(CONNECT_TIME*1000) #輸出建立連接時(shí)間 print u"傳輸結(jié)束總時(shí)間: %.2f ms" %(TOTAL_TIME*1000) #輸出傳輸結(jié)束總時(shí)間 print u"下載數(shù)據(jù)包大小: %d bytes/s" %(SIZE_DOWNLOAD) #輸出下載數(shù)據(jù)包大小 print u"HTTP頭部大小: %d byte" %(HEADER_SIZE) #輸出HTTP頭部大小 print u"平均下載速度: %d bytes/s" %(SPEED_DOWNLOAD) #輸出平均下載速度 indexfile.close() #關(guān)閉文件 c.close() #關(guān)閉curl對(duì)象 f = file('chart.txt','a') #打開一個(gè)chart.txt文件,以追加的方式 f.write(str(HTTP_CODE)+','+str(NAMELOOKUP_TIME*1000)+','+str(CONNECT_TIME*1000)+','+str(TOTAL_TIME*1000)+','+str(SIZE_DOWNLOAD/1024)+','+str(HEADER_SIZE)+','+str(SPEED_DOWNLOAD/1024)+'\n') #將上面輸出的結(jié)果寫入到chart.txt文件 f.close() #關(guān)閉chart.txt文件 workbook = xlsxwriter.Workbook('chart.xlsx') #創(chuàng)建一個(gè)chart.xlsx的excel文件 worksheet = workbook.add_worksheet() #創(chuàng)建一個(gè)工作表對(duì)象,默認(rèn)為Sheet1 chart = workbook.add_chart({'type': 'column'}) #創(chuàng)建一個(gè)圖表對(duì)象 title = [URL , u' HTTP狀態(tài)碼',u' DNS解析時(shí)間',u' 建立連接時(shí)間',u' 傳輸結(jié)束時(shí)間',u' 下載數(shù)據(jù)包大小',u' HTTP頭部大小',u' 平均下載速度'] #定義數(shù)據(jù)表頭列表 format=workbook.add_format() #定義format格式對(duì)象 format.set_border(1) #定義format對(duì)象單元格邊框加粗(1像素)的格式 format_title=workbook.add_format() #定義format_title格式對(duì)象 format_title.set_border(1) #定義format_title對(duì)象單元格邊框加粗(1像素)的格式 format_title.set_bg_color('#00FF00') #定義format_title對(duì)象單元格背景顏色為’#cccccc’ format_title.set_align('center') #定義format_title對(duì)象單元格居中對(duì)齊的格式 format_title.set_bold() #定義format_title對(duì)象單元格內(nèi)容加粗的格式 worksheet.write_row(0, 0,title,format_title) #將title的內(nèi)容寫入到第一行 f = open('chart.txt','r') #以只讀的方式打開chart.txt文件 line = 1 #定義變量line等于1 for i in f: #開啟for循環(huán)讀文件 head = [line] #定義變量head等于line lineList = i.split(',') #將字符串轉(zhuǎn)化為列表形式 lineList = map(lambda i2:int(float(i2.replace("\n", ''))), lineList) #將列表中的最后\n刪除,將小數(shù)點(diǎn)后面的數(shù)字刪除,將浮點(diǎn)型轉(zhuǎn)換成整型 lineList = head + lineList #兩個(gè)列表相加 worksheet.write_row(line, 0, lineList, format) #將數(shù)據(jù)寫入到execl表格中 line += 1 average = [u'平均值', '=AVERAGE(B2:B' + str((line - 1)) +')', '=AVERAGE(C2:C' + str((line - 1)) +')', '=AVERAGE(D2:D' + str((line - 1)) +')', '=AVERAGE(E2:E' + str((line - 1)) +')', '=AVERAGE(F2:F' + str((line - 1)) +')', '=AVERAGE(G2:G' + str((line - 1)) +')', '=AVERAGE(H2:H' + str((line - 1)) +')'] #求每一列的平均值 worksheet.write_row(line, 0, average, format) #在最后一行數(shù)據(jù)下面寫入平均值 f.close() #關(guān)閉文件 def chart_series(cur_row, line): #定義一個(gè)函數(shù) chart.add_series({ 'categories': '=Sheet1!$B$1:$H$1', #將要輸出的參數(shù)作為圖表數(shù)據(jù)標(biāo)簽(X軸) 'values': '=Sheet1!$B$'+cur_row+':$H$'+cur_row, #獲取B列到H列的數(shù)據(jù) 'line': {'color': 'black'}, #線條顏色定義為black 'name': '=Sheet1!$A'+ cur_row, #引用業(yè)務(wù)名稱為圖例項(xiàng) }) for row in range(2, line + 1): #從第二行開始到最后一次取文本中的行的數(shù)據(jù)系列函數(shù)調(diào)用 chart_series(str(row), line) chart.set_size({'width':876,'height':287}) #定義圖表的寬度及高度 worksheet.insert_chart(line + 2, 0, chart) #在最后一行數(shù)據(jù)下面的兩行處插入圖表 workbook.close() #關(guān)閉execl文檔
4、運(yùn)行腳本后,會(huì)在腳本所在的目錄下產(chǎn)生三個(gè)文件,兩個(gè)是txt文本文件,一個(gè)是Excel文件,執(zhí)行腳本后,會(huì)顯示如下信息:
5、當(dāng)前目錄下產(chǎn)生的文件如下:
其中,兩個(gè)txt格式的文件都是為了給Excel做鋪墊的,所以可以選擇性忽略即可,主要是看Excel中的數(shù)據(jù)。Excel中的數(shù)據(jù)如下(以下是執(zhí)行6次腳本后的顯示結(jié)果,也就是說探測了6次):
“怎么用Python采集web質(zhì)量數(shù)據(jù)到Excel表”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
本文標(biāo)題:怎么用Python采集web質(zhì)量數(shù)據(jù)到Excel表
分享地址:http://www.chinadenli.net/article46/jdhjeg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、營銷型網(wǎng)站建設(shè)、網(wǎng)站策劃、手機(jī)網(wǎng)站建設(shè)、網(wǎng)站維護(hù)、網(wǎng)站收錄
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)