Python是一種廣泛應用的編程語言,其強大的HTTP庫requests使其成為網絡數據抓取和處理的重要工具。Python requests模塊提供了簡潔明了的API,能夠輕鬆地與Web API交互和下載網站、解析HTML頁面等。本文從各個角度詳細闡述Python requests模塊的使用方法和注意事項。
一、請求方法
請求方法是使用requests的基礎。requests可以發送HTTP協議中的GET、POST、PUT、DELETE、HEAD、OPTIONS等請求,同時還能支持自定義請求中的Header、Cookies、超時時間等參數設置。下面以獲取豆瓣TOP250電影列表為例,詳細介紹各個請求方法的使用方法。
1. GET方法
GET是最常用的請求方法,也是requests模塊默認的請求方法,用於請求獲取指定URL的資源。例如,在豆瓣電影中獲取TOP250電影列表可以通過如下代碼實現:
import requests url = 'https://movie.douban.com/top250' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'} response = requests.get(url=url, headers=headers) print(response.text)
2. POST方法
POST請求可以用於提交表單、上傳文件等操作。如果需要向指定URL發送POST請求,示例如下:
import requests url = 'http://httpbin.org/post' data = {'key1': 'value1', 'key2': 'value2'} response = requests.post(url=url, data=data) print(response.text)
3. PUT、DELETE、HEAD、OPTIONS等方法
PUT、DELETE、HEAD、OPTIONS等方法的使用方法與GET和POST方法類似,只需要將requests.get和requests.post替換成相應的方法即可。例如,如果需要獲取一個Web頁面的Header信息,可以使用HEAD方法:
import requests url = 'https://github.com' response = requests.head(url=url) print(response.headers)
二、請求參數
requests還支持設置請求字符串參數,比如URL中的查詢參數、Post請求中的數據等。下面以豆瓣電影的分頁請求為例,展示如何在requests中指定查詢參數:
import requests url = 'https://movie.douban.com/top250' params = {'start': 25, 'filter': ''} response = requests.get(url=url, params=params) print(response.text)
三、響應內容
請求結束後,requests會返回一個Response對象。Response對象包含請求結果、返回碼、響應頭、響應Cookies等信息。下面展示如何獲取Response對象中的各個內容。
1. 請求結果
請求結果包含在Response對象的text屬性中:
import requests url = 'https://movie.douban.com/top250' response = requests.get(url) print(response.text)
2. 返回碼
返回碼可以通過Response對象的status_code屬性獲取。常見的HTTP返回碼有200、400、404、500等。
import requests url = 'https://movie.douban.com/top250' response = requests.get(url) print(response.status_code)
3. 響應頭
響應頭可以通過Response對象的headers屬性獲取:
import requests url = 'https://movie.douban.com/top250' response = requests.get(url) print(response.headers)
4. 響應Cookies
響應Cookies可以通過Response對象的cookies屬性獲取:
import requests url = 'https://movie.douban.com/top250' response = requests.get(url) print(response.cookies)
四、請求Header
Header是指HTTP請求中的頭部信息,包括User-Agent、Referer、Accept-Encoding、Content-Type等信息。requests支持自定義請求Header,可以在實際爬蟲中滿足一些特定需求。示例如下:
import requests url = 'https://movie.douban.com/top250' headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'} response = requests.get(url=url, headers=headers) print(response.text)
五、Cookies
requests還支持自定義Cookies信息,並且可以從Response對象中獲取到響應的Cookies信息。示例如下:
import requests url = 'https://movie.douban.com/top250' cookies = {'key1': 'value1', 'key2': 'value2'} response = requests.get(url=url, cookies=cookies) print(response.cookies)
六、文件上傳和下載
requests還支持文件的上傳和下載。在上傳時,可以使用Files參數指定上傳文件的路徑和文件名;在下載時,可以使用Response對象的content屬性保存下載文件的二進制內容,也可以使用Stream=True參數將下載文件流式存儲到本地文件。
1. 文件上傳
import requests url = 'http://httpbin.org/post' files = {'file': open('test.txt', 'rb')} response = requests.post(url=url, files=files) print(response.text)
2. 文件下載
import requests url = 'https://pic4.zhimg.com/v2-6e222db56d2f7b2b7d0edcf92328955a_r.jpg' response = requests.get(url, stream=True) with open('test.jpg', 'wb') as f: for chunk in response.iter_content(1024): f.write(chunk)
七、代理和超時
requests還支持設置代理和超時時間等參數。示例如下:
1. 設置代理
import requests url = 'https://movie.douban.com/top250' proxies = {'http': 'http://10.10.1.10:3128', 'https': 'http://10.10.1.10:1080'} response = requests.get(url=url, proxies=proxies) print(response.text)
2. 設置超時時間
import requests url = 'https://movie.douban.com/top250' timeout = 1 response = requests.get(url=url, timeout=timeout) print(response.text)
本文詳細介紹了Python requests模塊的各種請求方法、請求參數、響應內容、Header、Cookies、文件上傳下載、代理和超時等常用功能,可以用於實際生產環境中的網絡數據抓取和處理。具體使用方法可以參考官方文檔。在實際工作中,還需要時刻注意反爬蟲策略和合法使用規範等注意事項。
原創文章,作者:XJRIC,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/368636.html