日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

urllib.error.HTTPError: HTTP Error 403: Forbidden

發(fā)布時(shí)間:2025/3/15 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 urllib.error.HTTPError: HTTP Error 403: Forbidden 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

問題:

urllib.request.urlopen() 方法經(jīng)常會(huì)被用來打開一個(gè)網(wǎng)頁的源代碼,然后會(huì)去分析這個(gè)頁面源代碼,但是對于有的網(wǎng)站使用這種方法時(shí)會(huì)拋出"HTTP Error 403: Forbidden"異常 例如 執(zhí)行下面的語句時(shí) [python]? <span style="font-size:14px;"> urllib.request.urlopen("http://blog.csdn.net/eric_sunah/article/details/11099295")</span> ? 會(huì)出現(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)上面的異常,是因?yàn)槿绻?urllib.request.urlopen 方式打開一個(gè)URL,服務(wù)器端只會(huì)收到一個(gè)單純的對于該頁面訪問的請求,但是服務(wù)器并不知道發(fā)送這個(gè)請求使用的瀏覽器,操作系統(tǒng),硬件平臺(tái)等信息,而缺失這些信息的請求往往都是非正常的訪問,例如爬蟲. 有些網(wǎng)站為了防止這種非正常的訪問,會(huì)驗(yàn)證請求信息中的UserAgent(它的信息包括硬件平臺(tái)、系統(tǒng)軟件、應(yīng)用軟件和用戶個(gè)人偏好),如果UserAgent存在異常或者是不存在,那么這次請求將會(huì)被拒絕(如上錯(cuò)誤信息所示) 所以可以嘗試在請求中加入U(xiǎn)serAgent的信息 方案: 對于Python?3.x來說,在請求中添加UserAgent的信息非常簡單,代碼如下 [python] ? #如果不加上下面的這行出現(xiàn)會(huì)出現(xiàn)urllib2.HTTPError: HTTP Error 403: Forbidden錯(cuò)誤 ? #主要是由于該網(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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。