爬蟲常見的反爬措施有三種:
1、header頭部信息
解決方法:
加User-Agent值:
如果不加header頭,部分網站服務器判斷不到用戶的訪問來源,所以會返回一個404錯誤來告知你是一個爬蟲,拒絕訪問,解決辦法如下:headers?=?{
'User-agent':?'Mozilla/5.0?(Windows?NT?10.0;?Win64;?x64)?AppleWebKit/537.36?(KHTML,?like?Gecko)?Chrome/83.0.4103.56?Safari/537.36'
}
這樣服務器就會把用戶當做瀏覽器了。
加Referer值
這類反爬網站也很常見,例如美團,僅僅加User-Agnet還是返回錯誤信息,這時就要把Referer值也加到頭部信息中:
這樣就會返回正常網頁了。
加Host值
根據同源地址判斷用戶是否為爬蟲,解決辦法為:
加Accept值
之前遇到過這種網站,我加了一圈header頭部信息才成功,最后發現是需要加Accept值,這類反爬措施的解決辦法為:
2、限制IP的請求數量
這種就更常見了,大部分網站都有此類反爬措施,也就是說網站服務器會根據某個ip在特定時間內的訪問頻率來判斷是否為爬蟲,然后把你把你拉進“黑名單”,素質好的給你返回403或者出來個驗證碼,素質不好的會給你返回兩句臟話。此種情況有兩種解決辦法:
①降低爬蟲請求速率,但是會降低效率;
②添加代理ip,代理ip又分為付費的和不要錢的,前者比較穩定,后者經常斷線。
添加格式為:
3、Ajax動態請求加載
這類一般是動態網頁,無法直接找到數據接口,以某易新聞網站為例:
我想爬取該網頁內的新聞圖片,發現它的網頁url一直不變,但是下拉網頁的時候會一直加載圖片,那么我們該怎么辦呢?
首先按照開頭方式打開流量分析工具
點擊左上角“垃圾桶”圖標清空緩存,然后下拉新聞網頁:
會出現一大堆東西,但是不用慌,我們可以根據類型去尋找,一般圖片信息肯定實在html、js或json格式的文件中,一個一個點進去看看,很快就找到了結果:
結果中把callback去掉之后就是個json文件,它的url為:
更多Python知識,請關注:Python自學網!!