error模塊簡介
我們在爬蟲的時候發請求的時候難免出現錯誤,如訪問不到服務器或者訪問被禁止等等,
出錯了之后urllib將錯誤信息封裝成了一個模塊對象中,這個模塊就叫error模塊
error的分類
分為URLError和HTTPError。
URLError是OSError的一個子類
有以下錯誤的時候錯誤信息就會被封裝在URLError里:
- 無網絡
- 有網絡但是由於種種原因導致服務器連接失敗
而如果能夠連接服務器但是服務器返回了錯誤代碼如404,403等等(400以上),那么催無信息就會被封裝在HTTPError里
URLError與HttpError的區別和關系
區別:
- URLError封裝的錯誤信息一般是由網絡引起的,包括url錯誤
- HTTPError封裝的錯誤信息一般是服務器返回了錯誤狀態碼
關系:
- URLError是OSERROR的子類,HTTPError是URLError的子類
使用方法
error類是在捕獲錯誤信息的時候使用,而且一般我們也需要進行捕獲,因為你很難確定訪問請求一定不會出現錯誤
from urllib import request
from urllib import error
url = 'http://baiduuuu.com'
try:
res = request.Request(url)
response = request.urlopen(res)
print(response.read().decode())
except error.HTTPError as he:
print(he)
# print(he.reason)
except error.URLError as ue:
print(ue)
# print(ue.reason)
except Exception as e:
print(e)
注意:由於HTTPError是URLError的子類,所以捕獲的時候HTTPError要放在URLError的上面
