怎樣使用Requests模塊抓取網頁?
?爬取網頁其實就是通過URL獲取網頁信息,網頁信息的實質是一段添加了JavaScript和CSS的HTML代碼。Python提供了一個抓取網頁信息的第三方模塊requests,requests模塊自稱“HTTP for Humans”,直譯過來的意思是專門為人類而設計的HTTP模塊,該模塊支持發送請求,也支持獲取響應。
1.發送請求
requests模塊提供了很多發送HTTP請求的函數,常用的請求函數具體如表10-1所示。
表10-1 requests模塊的請求函數
2.獲取響應
requests模塊提供的Response 類對象用于動態地響應客戶端的請求,控制發送給用戶的信息,并且將動態地生成響應,包括狀態碼、網頁的內容等。接下來通過一張表來列舉Response類可以獲取到的信息,如表10-2所示。
表10-2 Response 類的常用屬性
接下來通過一個案例來演示如何使用requests模塊抓取百度網頁,具體代碼如下:
以上代碼中,第2行使用import導入了requests模塊;第3~4行代碼根據URL向服務器發送了一個GET請求,并使用變量res接收服務器返回的響應內容;第5~6行代碼打印了響應內容的狀態碼和編碼方式;第7行將響應內容的編碼方式更改為“utf-8”;第8行代碼打印了響應內容。運行程序,程序的輸出結果如下:
值得一提的是,使用requests模塊爬取網頁時,可能會因為沒有連接網絡、服務器連接失敗等原因導致產生各種異常,最常見的兩個異常是URLError和HTTPError,這些網絡異??梢允褂?try…except 語句捕獲與處理。