一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術(shù)及教程分享平臺!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - 玩轉(zhuǎn)python爬蟲之URLError異常處理

玩轉(zhuǎn)python爬蟲之URLError異常處理

2020-08-12 09:49崔慶才 Python

這篇文章主要介紹了python爬蟲的URLError異常處理,詳細探尋一下URL\HTTP異常處理的相關(guān)內(nèi)容,通過一些具體的實例來分析一下,非常的簡單,但是卻很實用,感興趣的小伙伴們可以參考一下

本節(jié)在這里主要說的是URLError還有HTTPError,以及對它們的一些處理。

1.URLError

首先解釋下URLError可能產(chǎn)生的原因:

  • 網(wǎng)絡(luò)無連接,即本機無法上網(wǎng)
  • 連接不到特定的服務(wù)器
  • 服務(wù)器不存在

在代碼中,我們需要用try-except語句來包圍并捕獲相應(yīng)的異常。下面是一個例子,先感受下它的風(fēng)騷

?
1
2
3
4
5
6
7
import urllib2
 
requset = urllib2.Request('http://www.xxxxx.com')
try:
  urllib2.urlopen(requset)
except urllib2.URLError, e:
  print e.reason

我們利用了 urlopen方法訪問了一個不存在的網(wǎng)址,運行結(jié)果如下:

?
1
[Errno 11004] getaddrinfo failed

它說明了錯誤代號是11004,錯誤原因是 getaddrinfo failed

2.HTTPError

HTTPError是URLError的子類,在你利用urlopen方法發(fā)出一個請求時,服務(wù)器上都會對應(yīng)一個應(yīng)答對象response,其中它包含一個數(shù)字”狀態(tài)碼”。舉個例子,假如response是一個”重定向”,需定位到別的地址獲取文檔,urllib2將對此進行處理。

其他不能處理的,urlopen會產(chǎn)生一個HTTPError,對應(yīng)相應(yīng)的狀態(tài)嗎,HTTP狀態(tài)碼表示HTTP協(xié)議所返回的響應(yīng)的狀態(tài)。下面將狀態(tài)碼歸結(jié)如下:

  • 100:繼續(xù)  客戶端應(yīng)當繼續(xù)發(fā)送請求。客戶端應(yīng)當繼續(xù)發(fā)送請求的剩余部分,或者如果請求已經(jīng)完成,忽略這個響應(yīng)。
  • 101: 轉(zhuǎn)換協(xié)議  在發(fā)送完這個響應(yīng)最后的空行后,服務(wù)器將會切換到在Upgrade 消息頭中定義的那些協(xié)議。只有在切換新的協(xié)議更有好處的時候才應(yīng)該采取類似措施。
  • 102:繼續(xù)處理   由WebDAV(RFC 2518)擴展的狀態(tài)碼,代表處理將被繼續(xù)執(zhí)行。
  • 200:請求成功      處理方式:獲得響應(yīng)的內(nèi)容,進行處理
  • 201:請求完成,結(jié)果是創(chuàng)建了新資源。新創(chuàng)建資源的URI可在響應(yīng)的實體中得到    處理方式:爬蟲中不會遇到
  • 202:請求被接受,但處理尚未完成    處理方式:阻塞等待
  • 204:服務(wù)器端已經(jīng)實現(xiàn)了請求,但是沒有返回新的信 息。如果客戶是用戶代理,則無須為此更新自身的文檔視圖。    處理方式:丟棄
  • 300:該狀態(tài)碼不被HTTP/1.0的應(yīng)用程序直接使用, 只是作為3XX類型回應(yīng)的默認解釋。存在多個可用的被請求資源。    處理方式:若程序中能夠處理,則進行進一步處理,如果程序中不能處理,則丟棄
  • 301:請求到的資源都會分配一個永久的URL,這樣就可以在將來通過該URL來訪問此資源    處理方式:重定向到分配的URL
  • 302:請求到的資源在一個不同的URL處臨時保存     處理方式:重定向到臨時的URL
  • 304:請求的資源未更新     處理方式:丟棄
  • 400:非法請求     處理方式:丟棄
  • 401:未授權(quán)     處理方式:丟棄
  • 403:禁止     處理方式:丟棄
  • 404:沒有找到     處理方式:丟棄
  • 500:服務(wù)器內(nèi)部錯誤  服務(wù)器遇到了一個未曾預(yù)料的狀況,導(dǎo)致了它無法完成對請求的處理。一般來說,這個問題都會在服務(wù)器端的源代碼出現(xiàn)錯誤時出現(xiàn)。
  • 501:服務(wù)器無法識別  服務(wù)器不支持當前請求所需要的某個功能。當服務(wù)器無法識別請求的方法,并且無法支持其對任何資源的請求。
  • 502:錯誤網(wǎng)關(guān)  作為網(wǎng)關(guān)或者代理工作的服務(wù)器嘗試執(zhí)行請求時,從上游服務(wù)器接收到無效的響應(yīng)。
  • 503:服務(wù)出錯   由于臨時的服務(wù)器維護或者過載,服務(wù)器當前無法處理請求。這個狀況是臨時的,并且將在一段時間以后恢復(fù)。
  •  

HTTPError實例產(chǎn)生后會有一個code屬性,這就是是服務(wù)器發(fā)送的相關(guān)錯誤號。
因為urllib2可以為你處理重定向,也就是3開頭的代號可以被處理,并且100-299范圍的號碼指示成功,所以你只能看到400-599的錯誤號碼。

下面我們寫一個例子來感受一下,捕獲的異常是HTTPError,它會帶有一個code屬性,就是錯誤代號,另外我們又打印了reason屬性,這是它的父類URLError的屬性。

?
1
2
3
4
5
6
7
8
import urllib2
 
req = urllib2.Request('http://blog.csdn.net/cqcre')
try:
  urllib2.urlopen(req)
except urllib2.HTTPError, e:
  print e.code
  print e.reason

運行結(jié)果如下

?
1
2
403
Forbidden

錯誤代號是403,錯誤原因是Forbidden,說明服務(wù)器禁止訪問。

我們知道,HTTPError的父類是URLError,根據(jù)編程經(jīng)驗,父類的異常應(yīng)當寫到子類異常的后面,如果子類捕獲不到,那么可以捕獲父類的異常,所以上述的代碼可以這么改寫

?
1
2
3
4
5
6
7
8
9
10
11
import urllib2
 
req = urllib2.Request('http://blog.csdn.net/cqcre')
try:
  urllib2.urlopen(req)
except urllib2.HTTPError, e:
  print e.code
except urllib2.URLError, e:
  print e.reason
else:
  print "OK"

如果捕獲到了HTTPError,則輸出code,不會再處理URLError異常。如果發(fā)生的不是HTTPError,則會去捕獲URLError異常,輸出錯誤原因。

另外還可以加入 hasattr屬性提前對屬性進行判斷,代碼改寫如下

?
1
2
3
4
5
6
7
8
9
10
11
12
import urllib2
 
req = urllib2.Request('http://blog.csdn.net/cqcre')
try:
  urllib2.urlopen(req)
except urllib2.URLError, e:
  if hasattr(e,"code"):
    print e.code
  if hasattr(e,"reason"):
    print e.reason
else:
  print "OK"

首先對異常的屬性進行判斷,以免出現(xiàn)屬性輸出報錯的現(xiàn)象。

以上,就是對URLError和HTTPError的相關(guān)介紹,以及相應(yīng)的錯誤處理辦法

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产精品一区二区不卡的视频 | 国产中文字幕 | 激情婷婷综合久久久久 | 免费观看视频在线播放 | 亚洲aⅴ男人的天堂在线观看 | 97超pen个人视频公开视频视 | 亚洲精品国产成人7777 | 日产免费自线一二区 | 亚洲精品一区制服丝袜 | 大伊人青草狠狠久久 | 成年男女免费视频观看性 | 国产无限 | 日韩精品一区二区三区中文版 | 桃色公寓 | 国产成人啪精品午夜在线播放 | 175m美女被网友灌醉啪啪玩脚 | 四虎884aa永久播放地址http | 四虎4hu永久免费国产精品 | 久久婷婷五月综合色精品首页 | 91桃色污| 五月桃花网婷婷亚洲综合 | 日本福利网 | 国产一区二区三区久久精品小说 | 桃色综合网 | 国内自拍网红在综合图区 | 国产激情影院 | 国产精品久久久久久久久久久威 | 视频一区 日韩 | 添逼逼视频 | 波多野给衣一区二区三区 | hd在线观看免费高清视频 | 77色视频在线 | 亚洲国产精品日韩高清秒播 | 门房秦大爷最新章节阅读 | 亚洲日本aⅴ片在线观看香蕉 | 欧美添下面视频免费观看 | 日韩去日本高清在线 | 麻豆婷婷 | 欧美亚洲国产另类在线观看 | 色悠久久久久综合网小说 | 色综久久天天综合绕视看 |