最近由于公司的自動(dòng)化測(cè)試工具需要將測(cè)試結(jié)果導(dǎo)出到excel中,奈何沒有學(xué)SSH,導(dǎo)致無法在工具本身中添加(工具是開發(fā)做的),故轉(zhuǎn)而使用python爬蟲來做,開發(fā)過程中遇到了一個(gè)問題: 由于測(cè)試結(jié)果太多,需要翻頁(yè),而翻頁(yè)時(shí)網(wǎng)址沒有變化,這就導(dǎo)致抓取的時(shí)候沒法依照網(wǎng)址去爬,遂去網(wǎng)上查找解決方法,最后找到利用urllib2提交post的方法來解決。 解決過程:
網(wǎng)址不變,而如果是用selenium的話,我又覺得太慢,畢竟selenium是用來做驗(yàn)收測(cè)試的,不是用來爬數(shù)據(jù)的。言歸正傳,利用urllib2提交post的方法來獲取翻頁(yè)數(shù)據(jù)的話,首先的找到網(wǎng)頁(yè)對(duì)應(yīng)的post,首先我找到了這個(gè): {'topage':'3'}
和這個(gè): {'pageNow':'3'}
這需要大家自己去網(wǎng)頁(yè)里找規(guī)律,不一定被放到了哪個(gè)位置,我因?yàn)楣ぞ呤枪鹃_發(fā)寫的,我在他的頁(yè)面代碼里找到了如下這段: 所以確定是{'pageNow':'3'}是對(duì)的。
既然找到post的鍵值,那接下來的事就簡(jiǎn)單了: 1 2 url = 網(wǎng)絡(luò)地址 3 #需要提交給表單鍵值對(duì) 4 query = {'pageNow':'3'} 5 6 #urllib.urlencode(query[, doseq]):將dict或者包含兩個(gè)元素的元組列表轉(zhuǎn)換成url參 7 #數(shù)。例如 字典{'name': 'dark-bull', 'age': 200}將被轉(zhuǎn)換為"name=dark-bull& 8 #age=200" 9 date = urllib.urlencode(query) 10 #向服務(wù)器端發(fā)送請(qǐng)求 11 post = urllib2.Request(url,date) 12 #接收服務(wù)端返回的內(nèi)容 13 response = urllib2.urlopen(request) 14 #轉(zhuǎn)化為頁(yè)面代碼 15 page = response.read() 16 17 18 print page 以上,控制臺(tái)上顯示出來的就是第三頁(yè)的代碼,這時(shí)大家就可以用正則去匹配自己需要的東西了\(^o^)/~ |
|