1. 程式人生 > >【python爬蟲】關於403問題的反爬處理

【python爬蟲】關於403問題的反爬處理

今天在學習 小甲魚 的python爬蟲,遇到下面問題

首先,貼上今天找到的一個技巧


在python報錯之後,定位c:之前的那個語句基本上就是出錯的地方。

1.urllib.error.HTTPError: HTTP Error 403: Forbidden

這個問題是由於網站的反爬機制,如果用 urllib.request.urlopen 方式開啟一個URL,伺服器端只會收到一個單純的對於該頁面訪問的請求,但是伺服器並不知道傳送這個請求使用的瀏覽器,作業系統,硬體平臺等資訊,而缺失這些資訊的請求往往都是非正常的訪問,例如爬蟲.
有些網站為了防止這種非正常的訪問,會驗證請求資訊中的UserAgent(它的資訊包括硬體平臺、系統軟體、應用軟體和使用者個人偏好),如果UserAgent存在異常或者是不存在,那麼這次請求將會被拒絕(如上錯誤資訊所示)
所以可以嘗試在請求中加入UserAgent的資訊

下面給出兩種方法:

a: 

 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
b:
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