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的上面