urllib.error.HTTPError: HTTP Error 403: Forbidden
生活随笔
收集整理的這篇文章主要介紹了
urllib.error.HTTPError: HTTP Error 403: Forbidden
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
問題:
urllib.request.urlopen() 方法經(jīng)常會被用來打開一個網(wǎng)頁的源代碼,然后會去分析這個頁面源代碼,但是對于有的網(wǎng)站使用這種方法時會拋出"HTTP Error 403: Forbidden"異常 例如 執(zhí)行下面的語句時 [python]? <span style="font-size:14px;"> urllib.request.urlopen("http://blog.csdn.net/eric_sunah/article/details/11099295")</span> ? 會出現(xiàn)以下異常: [python] ? <span style="color:#FF0000;"> ?File "D:\Python32\lib\urllib\request.py", line 475, in open ? response = meth(req, response) ? File "D:\Python32\lib\urllib\request.py", line 587, in http_response ? 'http', request, response, code, msg, hdrs) ? File "D:\Python32\lib\urllib\request.py", line 513, in error ? return self._call_chain(*args) ? File "D:\Python32\lib\urllib\request.py", line 447, in _call_chain ? result = func(*args) ? File "D:\Python32\lib\urllib\request.py", line 595, in http_error_default ? raise HTTPError(req.full_url, code, msg, hdrs, fp) ? urllib.error.HTTPError: HTTP Error 403: Forbidden</span> ? 分析: 之所以出現(xiàn)上面的異常,是因為如果用 urllib.request.urlopen 方式打開一個URL,服務(wù)器端只會收到一個單純的對于該頁面訪問的請求,但是服務(wù)器并不知道發(fā)送這個請求使用的瀏覽器,操作系統(tǒng),硬件平臺等信息,而缺失這些信息的請求往往都是非正常的訪問,例如爬蟲. 有些網(wǎng)站為了防止這種非正常的訪問,會驗證請求信息中的UserAgent(它的信息包括硬件平臺、系統(tǒng)軟件、應(yīng)用軟件和用戶個人偏好),如果UserAgent存在異常或者是不存在,那么這次請求將會被拒絕(如上錯誤信息所示) 所以可以嘗試在請求中加入UserAgent的信息 方案: 對于Python?3.x來說,在請求中添加UserAgent的信息非常簡單,代碼如下 [python] ? #如果不加上下面的這行出現(xiàn)會出現(xiàn)urllib2.HTTPError: HTTP Error 403: Forbidden錯誤 ? #主要是由于該網(wǎng)站禁止爬蟲導(dǎo)致的,可以在請求加上頭信息,偽裝成瀏覽器訪問User-Agent,具體的信息可以通過火狐的FireBug插件查詢 ? headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'} ? req = urllib.request.Request(url=chaper_url, headers=headers) ? urllib.request.urlopen(req).read() ? 將urllib.request.urlopen.read() 替換成上面的代碼后,對于出現(xiàn)問題的頁面就可以就正常訪問 轉(zhuǎn)自http://www.2cto.com/kf/201309/242273.html總結(jié)
以上是生活随笔為你收集整理的urllib.error.HTTPError: HTTP Error 403: Forbidden的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 民意调查Django实现(一)
- 下一篇: qt 窗口自绘、鼠标响应拖动窗口