Python爬蟲基礎之UrlError


一、urllib.error

python的urllib.error模塊主要是應對urllib.request在網絡請求過程中出現的異常而定義的異常處理類。主要有URLError和HTTPError兩個類,URLError的父類是OSError,HTTPError是URLError的子類。

1.urllib.error.URLError

URLError是OSError的子類,當請求過程中沒有網絡連接,域名映射的服務器不存在都會拋出異常。

屬性reason,說明產生異常的原因,返回一個字符串錯誤信息或者另外一個異常實例對象。

 1 import urllib.request
 2 import urllib.error
 3 
 4 try:
 5     request = urllib.request.Request('http://www.baidu.com/')
 6     response = urllib.request.urlopen(request)
 7     print(response.read().decode('utf-8'))
 8 except urllib.error.HTTPError as e:
 9     print('http error:%s' % e.reason)
10 except urllib.error.URLError as e:
11     print('url error:%s' % e.reason)

 產生異常:

 Request參數Url傳入一個不存在的域名地址www123.baidu.com或者直接拔掉網線(禁用網絡連接),程序就會拋出URLError

 request = urllib.request.Request('http://www123.baidu.com/')

 捕捉並打印異常信息:url error:[Errno 11004] getaddrinfo failed

 

2.urllib.error.HTTPError

HTTPError是URLError的子類,urllib.request.urlopen()請求過程中產生HTTP錯誤,例如資源不存在、身份授權異常,服務器內部錯誤等。

屬性code,返回http請求的狀態碼,例如200、404、500等

屬性reason,說明產生異常的原因,返回一個字符串錯誤信息。

屬性headers,urllib.request請求觸發HTTP Error異常,返回響應的請求頭headers信息。

 1 import urllib.request
 2 import urllib.error
 3 
 4 try:
 5     request = urllib.request.Request('https://www.cnblogs.com/123.html')
 6     response = urllib.request.urlopen(request)
 7     print(response.read().decode('utf-8'))
 8 except urllib.error.HTTPError as e:
 9     print('http error: http code :{0},error msg :{1}'.format(e.code, e.reason))
10 except urllib.error.URLError as e:
11     print('url error:%s' % e.reason)

產生異常:
Request參數Url傳入一個不存在的頁面地址123.html,請求的資源不存在,程序就會拋出HTTPError異常

request = urllib.request.Request('https://www.cnblogs.com/123.html')

捕捉並打印異常信息:http error: http code :404,error msg :Not Found


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM