Python網路爬蟲之HTTP的異常處理機制

2021-09-19 21:43:33 字數 1454 閱讀 6386

一、urlerror(url錯誤異常)

通常,urlerror在沒有網路連線(沒有路由到特定伺服器),或者伺服器不存在的情況下產生。這種情況下,異常同樣會帶有"reason"屬性,它是乙個tuple(可以理解為不可變的陣列),包含了乙個錯誤號和乙個錯誤資訊。看下面的示例

從程式中可以看到輸出為:[errno 11004] getaddrinfo failed,也就是說,錯誤號是11004,內容是getaddrinfo failed

二、httperror(httperror狀態錯誤)

伺服器上每乙個http 應答物件response包含乙個數字"狀態碼"。有時狀態碼指出伺服器無法完成請求。預設的處理器會為你處理一部分這種應答。例如:假如response是乙個"重定向",需要客戶端從別的位址獲取文件,urllib2將為你處理。其他不能處理的,urlopen會產生乙個httperror。典型的錯誤包含"404"(頁面無法找到),"403"(請求禁止),和"401"(帶驗證請求)。http狀態碼表示http協議所返回的響應的狀態。比如客戶端向伺服器傳送請求,如果成功地獲得請求的資源,則返回的狀態碼為200,表示響應成功。如果請求的資源不存在, 則通常返回404錯誤。 http狀態碼通常分為5種型別,分別以1~5五個數字開頭,由3位整數組成,如:200代表請求成功、304代表請求的資源未更新、400 代表非法請求,詳情見http狀態碼解析

httperror例項產生後會有乙個整型'code'屬性,是伺服器傳送的相關錯誤號。

error codes錯誤碼:因為預設的處理器處理了重定向(300以外號碼),並且100-299範圍的號碼指示成功,所以你只能看到400-599的錯誤號碼。basehttpserver.basehttprequesthandler.response是乙個很有用的應答號碼字典,顯示了http協議使用的所有的應答號。當乙個錯誤號產生後,伺服器返回乙個http錯誤號,和乙個錯誤頁面。你可以使用httperror例項作為頁面返回的應答物件response。這表示和錯誤屬性一樣,它同樣包含了read,geturl,和info方法。

從程式中可以看到輸出了404的錯誤碼,也就說沒有找到這個頁面。

三、http異常處理方式

http異常處理方式

從示例中可以看到,兩種方式都能輸出異常:其中第二種中httperror必須寫在urlerror異常前,因httperror是urlerror的子類,如果urlerror在前面它會捕捉到所有的urlerror(包括httperror )。

Python網路爬蟲 http和https協議

一.http協議 1.官方概念 http協議是hyper text transfer protocol 超文字傳輸協議 的縮寫,是用於從全球資訊網 www world wide web 伺服器傳輸超文字到本地瀏覽器的傳送協議。雖然童鞋們將這條概念都看爛了,但是也沒辦法,畢竟這就是http的權威官方的...

網路爬蟲(1) 爬蟲與HTTP

聚焦爬蟲 聚焦爬蟲是根據指定的需求抓取網路上指定的資料。例如 獲取豆瓣上電影的名稱和影評,而不是獲取整張頁面中所有的資料值。增量式爬蟲 增量式是用來檢測 資料更新的情況,且可以將 更新的資料進行爬取 後期會有章節單獨對其展開詳細的講解 即 有權規定 中哪些內容可以被爬蟲抓取,哪些內容不可以被爬蟲抓取...

Python 網路爬蟲之BeautifulSoup

在上一節記錄了如何使用urllib進行網路爬蟲,並將資料儲存。但是我當時是使用的正規表示式進行的資料過濾,有些不全面。接下來我將記錄一種更加方便的解析資料的操作 beautifulsoup 安裝beautifulsoup4 導包import urllib.request from bs4 impor...