|
問(wèn)題背景:需要統(tǒng)計(jì)雁門(mén)關(guān)10年的客流量數(shù)據(jù),每次需要選擇時(shí)間,然后提交,網(wǎng)頁(yè)上回返回客流量數(shù)據(jù), 網(wǎng)址鏈接:http://www./yuce/index/cid/166.shtml 思路:網(wǎng)頁(yè)選擇時(shí)間,然后提交時(shí)間,頁(yè)面返回一個(gè)數(shù)據(jù),和工作上遇到的POST類似,考慮通過(guò)python編寫(xiě)一個(gè)post循環(huán)得到相應(yīng)的數(shù)據(jù)并保存到excel。 步驟: 1、在chrome打開(kāi)網(wǎng)頁(yè),F(xiàn)12進(jìn)入調(diào)試狀態(tài)
選擇network找到Form Data就是每次post給后臺(tái)服務(wù)器的數(shù)據(jù),可以發(fā)現(xiàn)post的data有時(shí)間date和dosubmit信息。 2、python腳本編寫(xiě) # coding=utf-8import requestsimport datetimepost_url = 'http://www./yuce/index/cid/166.shtml' # 現(xiàn)在的時(shí)間now = datetime.datetime.now()# 遞減的時(shí)間delta = datetime.timedelta(days=-1)# 10年后的時(shí)間endnow = now - datetime.timedelta(days=3662)# 10年后的時(shí)間轉(zhuǎn)換成字符串endnow = str(endnow.strftime('%Y-%m-%d'))offset = now csvfile = open('output.csv', 'w') # 創(chuàng)建記錄信息csvfile.write('時(shí)間' ',')csvfile.write('人數(shù)' '\n') # 當(dāng)日期減少到10年后的日期,循環(huán)結(jié)束while str(offset.strftime('%Y-%m-%d')) != endnow: offset = delta data = { 'date': str(offset.strftime('%Y-%m-%d')), 'dosubmit': '查詢 '} tqHtml = requests.post(post_url, data=data) res = tqHtml.text num = res[10300:10400].split('<')[0] print('統(tǒng)計(jì)到' str(offset.strftime('%Y-%m-%d')) '的來(lái)訪客流量') csvfile.write(str(offset.strftime('%Y-%m-%d')) ',') csvfile.write(num '\n')代碼中首先計(jì)算了10年的時(shí)間天數(shù)為3662,達(dá)到對(duì)應(yīng)的時(shí)間字符串,爬蟲(chóng)的數(shù)據(jù)放在csv文件中。通過(guò)requests模塊進(jìn)行post,返回的html文件,嘗試了json等方式都無(wú)法提取到相應(yīng)的客流量數(shù)據(jù),最后采用了字符串的處理方法,通過(guò)split解析出了相應(yīng)的人數(shù)信息。 |
|
|