大部分網站對網絡爬蟲都有限制,限制方式有兩種:
一、Robots協議;二、網站通過判斷對網站訪問http的頭部信息來查看是否是爬蟲,並對爬蟲做相關攔截
第一種限制是書面限制,第二種是強制性阻攔限制。那我們如何去突破第二種限制呢?
首先我們要爬取一個網站大部分會使用requests庫的get()方法,而get()方法返回的response對象中包含了我們對網站的請求信息。例如:
import requests url = 'https://www.cnblogs.com/huwt/' res = requests.get(url) print(res.request.headers)
-----------------------------------------------
輸出結果:
{'User-Agent': 'python-requests/2.19.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'}
通過請求的頭部信息我們可以看到一個鍵值對:'User-Agent': 'python-requests/2.19.1',而強制性的限制就是通過判斷'User-Agent'的值來判斷是否為爬蟲,
只要我們將請求對象中'User-Agent'的值修改為瀏覽器的'User-Agent'即可,例如:
import requests url = 'https://www.cnblogs.com/huwt/' res = requests.get(url, headers = {'User-Agent':'Mozilla/5.0'}) print(res.request.headers)
-----------------------------------------------
輸出結果:
{'User-Agent': 'Mozilla/5.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'}
我們可以看到通過修改get()方法的參數就能將'User-Agent'的值被修改為'Mozilla/5.0',此時我們的爬蟲模擬成了Mozilla/5.0瀏覽器,
這樣就可以不被識別的去訪問一些有所限制的網站了。
提醒:
以上方法只供實驗測試使用,任何一名爬蟲使用者都應遵守Robots協議,文明爬取網站。