【python爬蟲】關於403問題的反爬處理
阿新 • • 發佈:2019-01-07
今天在學習 小甲魚 的python爬蟲,遇到下面問題
首先,貼上今天找到的一個技巧
在python報錯之後,定位c:之前的那個語句基本上就是出錯的地方。
1.urllib.error.HTTPError: HTTP Error 403: Forbidden
這個問題是由於網站的反爬機制,如果用 urllib.request.urlopen 方式開啟一個URL,伺服器端只會收到一個單純的對於該頁面訪問的請求,但是伺服器並不知道傳送這個請求使用的瀏覽器,作業系統,硬體平臺等資訊,而缺失這些資訊的請求往往都是非正常的訪問,例如爬蟲.
有些網站為了防止這種非正常的訪問,會驗證請求資訊中的UserAgent(它的資訊包括硬體平臺、系統軟體、應用軟體和使用者個人偏好),如果UserAgent存在異常或者是不存在,那麼這次請求將會被拒絕(如上錯誤資訊所示)
所以可以嘗試在請求中加入UserAgent的資訊
下面給出兩種方法:
a:
b:headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.62 Safari/537.36'} req = urllib.request.Request(url=url,headers=headers)#這裡要注意,必須使用url=url,headers=headers的格式,否則回報錯,無法連線字元 response = urllib.request.urlopen(req)#注意,這裡要用req,不然就被新增useragent
req = urllib.request.Request(url)
req.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, li......
response = urllib.request.urlopen(req)#注意,這裡要用req,不然就被新增useragent