Python作為一門高效便捷的編程語言,有著廣泛的應用場景。其中,網路爬蟲是Python應用最為精彩、實用的一個方向。requests模塊可以說是網路爬蟲領域中的瑞士軍刀,它可以方便地操作HTTP請求和響應。本文將系統介紹requests模塊,讓讀者更深入地理解並實現Python網路爬蟲。
一、requests模塊介紹
requests模塊是Python中操作HTTP協議的第三方庫,封裝了HTTP請求、響應和URL處理等功能。它基於urllib3庫,具有更好的性能和易用性。
import requests
response = requests.get('https://www.baidu.com')
print(response.text)
上述例子中,我們使用requests.get方法發起HTTP請求,get方法的參數為待獲取頁面的URL。並使用print列印出獲取到的HTML頁面源碼。這是一個簡單而直觀的使用requests模塊的方法。
二、requests的基本用法
1. 發送帶參數的GET請求
在實際應用中,我們會經常需要帶有參數的請求。requests模塊提供了params參數來方便地傳遞參數。params參數是字典類型,它會將請求參數自動轉換為url編碼格式添加到URL中。
import requests
response = requests.get('https://www.baidu.com/s', params={'wd': 'Python 爬蟲'})
print(response.url)
上述例子中,我們使用requests庫的get方法向百度搜索發出GET請求,帶上了一個wd參數,wd的值為Python 爬蟲。由於URL中使用的是百度搜索的方式,因此我們可以在返回結果的URL中看到,參數已經被自動編碼加入到URL中。最終我們可以得到搜索結果的HTML源代碼。
2. 發送POST請求
發送POST請求和GET請求類似,使用方法稍微有些不同。通過傳遞data參數,可以將請求體添加到POST請求中。
import requests
data = {'username': 'admin', 'password': '123456'}
response = requests.post('http://www.xxx.com/login', data=data)
上述例子中,我們向http://www.xxx.com/login發出POST請求,帶上了兩個參數,分別是username和password。這是一個模擬用戶登錄的例子。
3. 響應內容
requests模塊的response對象包含了響應內容的各種屬性,如HTTP狀態碼、響應時間、響應頭和響應體等等。
import requests
response = requests.get('https://www.baidu.com')
print(response.status_code)
print(response.headers)
print(response.content)
print(response.cookies)
這裡只列舉了一部分響應內容的屬性,也可以通過response.text獲得響應的文本內容。
4. 所有請求方法
requests模塊提供了各種請求方法。除了上文介紹的get和post方法,還有put、delete、head、options等等。
import requests
response1 = requests.put('http://httpbin.org/put', data={'key': 'value'})
response2 = requests.delete('http://httpbin.org/delete')
response3 = requests.head('http://httpbin.org/get')
response4 = requests.options('http://httpbin.org/get')
三、requests的進階用法
1. 添加請求頭
實際應用中,有時候需要在請求頭中添加一些信息來模擬瀏覽器訪問。requests模塊允許我們設置請求頭的參數。
import requests
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
response = requests.get('https://www.baidu.com', headers=headers)
上述例子中,我們使用了User-Agent來模擬請求頭。User-Agent是一個特殊的請求頭,會告訴伺服器請求的客戶端信息。在這裡,我們使用Mozilla/5.0(Windows NT 6.1; Win64; x64)模擬Chrome瀏覽器。
2. 處理Cookie
requests模塊允許我們方便地處理Cookie信息。可以使用cookies參數來接收一個cookie字典。另外,requests模塊還提供了便捷的Session對象來幫助我們保存Cookie信息。
import requests
session = requests.Session()
session.post('http://httpbin.org/post', data={'key': 'value'})
response = session.get('http://httpbin.org/get')
上述例子中,我們使用Session對象來保存請求中的Cookie信息,並在下一次請求中保留下來。
3. 處理代理
代理伺服器是我們在爬取一些數據的時候常常會用到的一種方式。requests庫提供了proxies參數來實現代理請求。
import requests
proxies = {
"http": "http://10.10.1.10:3128",
"https": "http://10.10.1.10:1080",
}
response = requests.get("http://www.baidu.com", proxies=proxies)
上述例子中,我們使用了一個代理伺服器,連接到URL時會自動使用代理伺服器的地址和埠進行連接。
4. 使用SSL證書
requests模塊能夠自動地檢測和處理SSL證書問題。在某些情況下,我們可能需要手動指定證書文件。
import requests
response = requests.get('https://www.12306.cn', verify=False)
print(response.content.decode())
該例子中關鍵在於verify參數,如果不指定該參數或者值為True表示需要驗證SSL證書,requests會把證書驗證失敗視為錯誤,如果值為False則不檢查證書。在實際使用中,該參數不建議使用False,如需要指定本地證書,將該參數設置成證書路徑即可。
總結
以上就是requests模塊基本用法和進階用法的介紹。requests模塊作為Python爬蟲領域中的入門級別的第三方庫,具有易學、易用的優點,適合Python初學者快速入門。requests模塊完美地整合了HTTP請求和響應的各種功能,讓網路爬蟲開發更加便捷。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/183313.html