首頁 >後端開發 >Python教學 >如何使用Requests模組抓取網頁?

如何使用Requests模組抓取網頁?

WBOY
WBOY轉載
2023-04-11 22:37:181949瀏覽

爬取網頁其實就是透過URL取得網頁訊息,網頁訊息的實質是一段新增了JavaScript和CSS的HTML程式碼。 Python提供了一個抓取網頁資訊的第三方模組requests,requests模組自稱「HTTP for Humans」,直譯過來的意思是專門為人類而設計的HTTP模組,該模組支援發送請求,也支援獲取回應。

1.發送請求

requests模組提供了許多發送HTTP請求的函數,常用的請求函數具體如表10-1所示。

表10-1 requests模組的請求函數

如何使用Requests模組抓取網頁?

#2.取得回應

requests模組提供的Response 類別物件用於動態地回應客戶端的請求,控制發送給使用者的訊息,並且將動態地產生回應,包括狀態碼、網頁的內容等。接下來透過一張表格來列舉Response類別可以取得的信息,如表10-2所示。

表10-2 Response 類別的常用屬性

如何使用Requests模組抓取網頁?

#接下來透過一個案例來示範如何使用requests模組抓取百度網頁,具體程式碼如下:

# 01 requests baidu
import requests
base_url = 'http://www.baidu.com'
#发送GET请求
res = requests.get (base_url)
print("响应状态码:{}".format(res.status_code))#获取响应状态码
print("编码方式:{}".format(res.encoding))#获取响应内容的编码方式
res.encoding = 'utf-8'#更新响应内容的编码方式为UIE-8
print("网页源代码:n{}".format(res.text)) #获取响应内容

以上程式碼中,第2行使用import導入了requests模組;第3~4行程式碼根據URL向伺服器發送了一個GET請求,並使用變數res接收伺服器傳回的回應內容;第5 ~6行程式碼列印了回應內容的狀態碼和編碼方式;第7行將回應內容的編碼方式變更為「utf-8」;第8行程式碼列印了回應內容。運行程序,程序的輸出結果如下:

响应状态码:200
编码方式:ISO-8859-1
网页源代码:
<!DOCTYPE html>
<!–-STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;
charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=
always name=referrer><link rel=stylesheet type=text/css href=http://s1.bdstatic.
com/r/www/cache/bdorz/baidu.min.css><title>百度一下,你就知道</title></head>
<body link=#0000cc>…省略N行…</body></html>

值得一提的是,使用requests模組爬取網頁時,可能會因為沒有連接網絡、伺服器連接失敗等原因導致產生各種異常,最常見的兩個異常是URLError和HTTPError,這些網路異常可以使用try…except 語句來擷取與處理。

以上是如何使用Requests模組抓取網頁?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:51cto.com。如有侵權,請聯絡admin@php.cn刪除