python爬蟲之路2-urllib2 的異常錯誤處理(HTTP異常響應碼大全)

urllib2 的異常錯誤處理

在我們用urlopen或opener.open方法發出一個請求時,如果urlopen或opener.open不能處理這個response,就產生錯誤。這裡主要說的是URLError和HTTPError,以及對它們的錯誤處理。

URLError

URLError 產生的原因主要有:

  • 沒有網絡連接
  • 服務器連接失敗
  • 找不到指定的服務器

我們可以用try except語句來捕獲相應的異常。下面的例子裡我們訪問了一個不存在的域名:

python爬蟲之路2-urllib2 的異常錯誤處理(HTTP異常響應碼大全)

運行結果如下:

urlopen error,錯誤代碼8,錯誤原因是沒有找到指定的服務器。

HTTPError

  1. HTTPError是URLError的子類,我們發出一個請求時,服務器上都會對應一個response應答對象,其中它包含一個數字"響應狀態碼"。
  2. 如果urlopen或opener.open不能處理的,會產生一個HTTPError,對應相應的狀態碼,HTTP狀態碼錶示HTTP協議所返回的響應的狀態。
  3. 注意,urllib2可以為我們處理重定向的頁面(也就是3開頭的響應碼),100-299範圍的號碼錶示成功,所以我們只能看到400-599的錯誤號碼。
python爬蟲之路2-urllib2 的異常錯誤處理(HTTP異常響應碼大全)

運行結果:

python爬蟲之路2-urllib2 的異常錯誤處理(HTTP異常響應碼大全)

HTTP Error,錯誤代號是404,錯誤原因是Not Found,說明服務器無法找到被請求的頁面。

通常產生這種錯誤的,要麼url不對,要麼ip被封。

由於HTTPError的父類是URLError,所以父類的異常應當寫到子類異常的後面,所以上述的代碼可以這麼改寫:

python爬蟲之路2-urllib2 的異常錯誤處理(HTTP異常響應碼大全)

運行結果:404,這樣我們就可以做到,首先捕獲子類的異常,如果子類捕獲不到,那麼可以捕獲父類的異常。

HTTP響應狀態碼參考:

python爬蟲之路2-urllib2 的異常錯誤處理(HTTP異常響應碼大全)

python爬蟲之路2-urllib2 的異常錯誤處理(HTTP異常響應碼大全)

python爬蟲之路2-urllib2 的異常錯誤處理(HTTP異常響應碼大全)

python爬蟲之路2-urllib2 的異常錯誤處理(HTTP異常響應碼大全)

python爬蟲之路2-urllib2 的異常錯誤處理(HTTP異常響應碼大全)

python爬蟲之路2-urllib2 的異常錯誤處理(HTTP異常響應碼大全)

python爬蟲之路2-urllib2 的異常錯誤處理(HTTP異常響應碼大全)

python爬蟲之路2-urllib2 的異常錯誤處理(HTTP異常響應碼大全)

python爬蟲之路2-urllib2 的異常錯誤處理(HTTP異常響應碼大全)

機器學習視頻下載:關注發私信(機器學習)可獲取下載鏈接

python爬蟲之路2-urllib2 的異常錯誤處理(HTTP異常響應碼大全)


分享到:


相關文章: