基礎之模擬請求(2)
在開發爬蟲程式前,你應該知道你需要的資料來自哪兒,以及怎麼獲取。
為了更快的做到這一點,需要對http請求進行模擬進行驗證。
以下是我常用的幾種方式,基本上是足夠用了。
以南方航空官網為例,假如我想爬南航的機票航班資訊,那麼我會先用瀏覽器除錯一番。
瀏覽器除錯用火狐瀏覽器開啟南航官網,先開啟偵錯程式【右擊頁面->檢視元素】,再提交如下查詢。
接下來會跳轉到航班頁面。
這個時候航班資訊已經出來了,說明剛才肯定有某個請求是負責獲取這些航班資料的,我們要找到這個請求。
通過檢視所有請求的響應資料,很容易就能找到,這是乙個名為query.ao的請求(還有另乙個query.ao請求,它獲取的是另一類資料)。
響應資料是乙個json格式的字串,在火狐中自動顯示成物件,能方便展開。
看到這裡,你就知道通過這個請求能夠獲取到對應的航班資訊,接下來看看這個請求是什麼樣的。
這是乙個post型別的http請求,通過【編輯和重發】按鈕,你可以修改請求的post引數再次傳送給伺服器,這裡我們不做任何修改,再次傳送同樣的請求,你會發現返回的資料是一模一樣的。
換句話說,這個請求在任何電腦上執行都會得到相同的結果,不信你可以試試。
瀏覽器的除錯功能還有很多,也有很多外掛程式輔助除錯,比如我就習慣在chrome裡使用【editthis cookie】外掛程式,可以很全面的除錯cookie,而且我也習慣在chrome裡除錯js**,基本上是火狐和chrome切換著除錯,有興趣的可以多琢磨琢磨。
以上是通過瀏覽器來模擬請求,既方便也快捷,但如果執行一些非常靈活的除錯會比較慢,如引數,cookie,請求頭的更改。
fiddler除錯如果嫌瀏覽器除錯麻煩,我也會用fiddler來除錯。
也可以直接使用fiddler模擬請求傳送,如下圖所示,我把剛才的請求複製到fiddler中進行模擬傳送。
返回的資料如下圖所示:
返回的航班資料是一樣的,通過fillder,可以比瀏覽器更方便的除錯請求。
關於fillder工具的使用方法在網上能找到,這裡不再贅述。
以上介紹的是我常用的方式,你也可以使用其它工具來達到類似目的,如wireshark。
python模擬對於爬蟲程式,最終目的就是在程式中實現資料請求,這樣才能自動化批量獲取資料。
這裡展示乙個最基礎的網頁資料請求,獲取南航官網的html頁面原始碼。
源**如下:
#!/usr/bin/python本節介紹的是最基礎的使用方式,目的是為新手搭建乙個基礎觀念以及解決思路。import urllib2
def gethtml(url):
page = urllib2.urlopen(url)
html = page.read()
return html
url = ""
print gethtml(url)
關於http請求,很多細節需要讀者自己摸索,比如http請求頭各字段的含義?get請求與post請求的區別?以及urlencode編碼與json格式等概念。以上答案都可以在網際網路上搜尋到。
爬蟲 模擬請求
我們將要爬取人民網某些新聞中的資料,那我們該如何實現呢?首先我們先實現第一步 根據url,模擬url請求,根據url獲取網頁中的內容。設定全域性的標準cookie策略 requestconfig config requestconfig.custom setcookiespec cookiespec...
爬蟲(一)反爬蟲機制
爬蟲用久了,總是會被封的。魯迅 有些 特別是一些陳年老站,沒有做過反爬蟲機制的,我們可以盡情地爬,愉快地爬,把它們的 資料全都爬下來。最多出於情懷考慮,我們爬慢一點,不給它的伺服器太大壓力。但是對於有反爬蟲機制的 我們不能這樣。最簡單的反爬蟲機制應該是u a校驗了。瀏覽器在傳送請求的時候,會附帶一部...
glidedsky爬蟲之css反爬蟲
author cjp file cssfan.py time 2020 9 11 16 37 import re from operator import itemgetter import requests from lxml import etree defgao url items heade...