您好,登錄后才能下訂單哦!
這篇文章主要介紹“python爬蟲urllib中的異常模塊如何處理”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“python爬蟲urllib中的異常模塊如何處理”文章能幫助大家解決問題。
在我們寫爬蟲程序時,若出現url中的錯誤,那么我們就無法爬取我們想要的內容,對此,我們引入了urllib中的異常處理。
URL由6個部分組成:eg:
https://www.baidu.com/s?wd=易烊千璽
協議(http/https)
主機(www.baidu.com)
端口號(80/443)
路徑(s)
參數(wd=易烊千璽)
錨點
常見的端口號:
http(80) https(443) mysql(3306) oracle(1521) redis(6379) mongodb(27017)
通常來說,URLError報錯通常為url地址中主機部分的錯誤:
實例:
url = 'https://www.baidu.com1/'
運行結果:
urllib.error.URLError: <urlopen error [Errno 11001] getaddrinfo failed
這個異常的通常是url地址中參數或是路徑的錯誤。
實例:
url = 'https://www.jianshu.com/p/3388cf148dba1'
運行結果:
urllib.error.HTTPError: HTTP Error 404: Not Found
HTTPError類是URLError類的子類
導入的包urllib.error.HTTPError/urllib.error.URLError
http錯誤:http錯誤是針對瀏覽器無法連接到服務器而增加的出來的錯誤提示,引導并告訴瀏覽者該頁是出了什么問題。
通過urllib發送請求的時候,有可能會發送失敗,這個時候如果想讓你的代碼更健壯,可以通過try -except進行捕獲異常。
urllib.error 模塊為 urllib.request 所引發的異常定義了異常類,基礎異常類是 URLError。
urllib.error 包含了兩個方法,URLError 和 HTTPError。
URLError 是 OSError 的一個子類,用于處理程序在遇到問題時會引發此異常(或其派生的異常)。
HTTPError 是 URLError 的一個子類,用于處理特殊 HTTP 錯誤例如作為認證請求的時候,包含的屬性 code 為 HTTP 的狀態碼, reason 為引發異常的原因,headers 為導致 HTTPError 的特定 HTTP 請求的 HTTP 響應頭。
用try except語句塊捕獲并處理異常,其基本語法結構如下所示:
try:可能產生異常的代碼塊
except [ (Error1, Error2, … ) [as e] ]:處理異常的代碼塊1
except [ (Error3, Error4, … ) [as e] ]:處理異常的代碼塊2
except [Exception]:處理其它異常
實例:
原url= ‘https://www.jianshu.com/p/3388cf148dba’
源碼:
import urllib.request import urllib.error url = 'https://www.jianshu.com1/p/3388cf148dba' # url的組成 eg:https://www.baidu.com/s?wd=易烊千璽 # 1.協議(http/https) 2.主機(www.baidu.com) 3.端口號(80/443) 4.路徑(s) 5.參數(wd=易烊千璽) 6.錨點 # 常見的端口號 # http(80) https(443) mysql(3306) oracle(1521) redis(6379) mongodb(27017) headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36' } try: request = urllib.request.Request(url = url,headers = headers) response = urllib.request.urlopen(request) content = response.read().decode('utf8') print(content) except urllib.error.HTTPError: print('HTTP異常,請稍后!') except urllib.error.URLError: print('URL異常,請稍后!')
1.URLError
url = ‘https://www.jianshu.com1/p/3388cf148dba’
運行結果:
2.HTTPError
url = ‘https://www.jianshu.com/p/3388cf148dba111’
運行結果:
關于“python爬蟲urllib中的異常模塊如何處理”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。