一文帶你玩轉(zhuǎn)python中的requests函數(shù)
介紹
在Python中,requests庫是用于發(fā)送HTTP請求的常用庫。它提供了簡潔易用的接口,使得發(fā)送HTTP請求變得非常簡單。本文將深入探討requests庫的使用方法,從入門到精通。
1. 安裝requests庫
在使用requests庫之前,我們需要先安裝它??梢允褂靡韵旅顏戆惭brequests庫:
pip install requests
2. 發(fā)送GET請求
requests庫中的get()函數(shù)可以用于發(fā)送GET請求。
import requests
# 發(fā)送GET請求
response = requests.get('https://api.example.com/data')
# 輸出響應(yīng)內(nèi)容
print(response.text)在上述代碼中,我們使用requests.get()函數(shù)發(fā)送GET請求到https://api.example.com/data,并將響應(yīng)保存在變量response中。然后,使用response.text打印響應(yīng)內(nèi)容。
3. 發(fā)送帶參數(shù)的GET請求
有時候我們需要發(fā)送帶參數(shù)的GET請求。
import requests
# 發(fā)送帶參數(shù)的GET請求
params = {'key': 'value'}
response = requests.get('https://api.example.com/data', params=params)
# 輸出響應(yīng)內(nèi)容
print(response.text)在上述代碼中,我們使用params參數(shù)傳遞參數(shù),發(fā)送帶參數(shù)的GET請求到https://api.example.com/data,并將響應(yīng)保存在變量response中。
4. 發(fā)送POST請求
requests庫中的post()函數(shù)可以用于發(fā)送POST請求。
import requests
# 發(fā)送POST請求
data = {'key': 'value'}
response = requests.post('https://api.example.com/data', data=data)
# 輸出響應(yīng)內(nèi)容
print(response.text)在上述代碼中,我們使用requests.post()函數(shù)發(fā)送POST請求到https://api.example.com/data,并將響應(yīng)保存在變量response中。
5. 發(fā)送帶參數(shù)的POST請求
有時候我們需要發(fā)送帶參數(shù)的POST請求。
import requests
# 發(fā)送帶參數(shù)的POST請求
data = {'key1': 'value1', 'key2': 'value2'}
response = requests.post('https://api.example.com/data', data=data)
# 輸出響應(yīng)內(nèi)容
print(response.text)在上述代碼中,我們使用data參數(shù)傳遞參數(shù),發(fā)送帶參數(shù)的POST請求到https://api.example.com/data,并將響應(yīng)保存在變量response中。
6. 發(fā)送JSON數(shù)據(jù)
requests庫中的post()函數(shù)也可以用于發(fā)送JSON數(shù)據(jù)。
import requests
# 發(fā)送JSON數(shù)據(jù)
json_data = {'key': 'value'}
response = requests.post('https://api.example.com/data', json=json_data)
# 輸出響應(yīng)內(nèi)容
print(response.text)在上述代碼中,我們使用json參數(shù)傳遞JSON數(shù)據(jù),發(fā)送POST請求到https://api.example.com/data,并將響應(yīng)保存在變量response中。
7. 發(fā)送文件
requests庫中的post()函數(shù)還可以用于發(fā)送文件。
import requests
# 發(fā)送文件
files = {'file': open('data.txt', 'rb')}
response = requests.post('https://api.example.com/upload', files=files)
# 輸出響應(yīng)內(nèi)容
print(response.text)在上述代碼中,我們使用files參數(shù)傳遞文件,發(fā)送POST請求到https://api.example.com/upload,并將響應(yīng)保存在變量response中。
8. 設(shè)置請求頭
有時候我們需要設(shè)置請求頭,以便向服務(wù)器傳遞更多信息。
import requests
# 設(shè)置請求頭
headers = {'User-Agent': 'Mozilla/5.0'}
response = requests.get('https://api.example.com/data', headers=headers)
# 輸出響應(yīng)內(nèi)容
print(response.text)在上述代碼中,我們使用headers參數(shù)設(shè)置請求頭,發(fā)送GET請求到https://api.example.com/data,并將響應(yīng)保存在變量response中。
9. 設(shè)置超時時間
在發(fā)送請求時,有時候我們需要設(shè)置超時時間,防止請求時間過長。
import requests
# 設(shè)置超時時間為5秒
timeout = 5
response = requests.get('https://api.example.com/data', timeout=timeout)
# 輸出響應(yīng)內(nèi)容
print(response.text)在上述代碼中,我們使用timeout參數(shù)設(shè)置超時時間為5秒,發(fā)送GET請求到https://api.example.com/data,并將響應(yīng)保存在變量response中。
10. 處理響應(yīng)
requests庫返回的響應(yīng)是一個Response對象,我們可以通過該對象獲取響應(yīng)的各種信息。
import requests
# 發(fā)送GET請求
response = requests.get('https://api.example.com/data')
# 獲取響應(yīng)狀態(tài)碼
status_code = response.status_code
# 獲取響應(yīng)頭
headers = response.headers
# 獲取響應(yīng)內(nèi)容
content = response.text
# 輸出響應(yīng)狀態(tài)碼、響應(yīng)頭和響應(yīng)內(nèi)容
print("狀態(tài)碼:", status_code)
print("響應(yīng)頭:", headers)
print("響應(yīng)內(nèi)容:", content)在上述代碼中,我們使用response.status_code獲取響應(yīng)狀態(tài)碼,使用response.headers獲取響應(yīng)頭,使用response.text獲取響應(yīng)內(nèi)容,并將這些信息輸出。
11. 異常處理
在發(fā)送請求時,可能會發(fā)生一些異常,我們需要進(jìn)行適當(dāng)?shù)漠惓L幚怼?/p>
import requests
try:
# 發(fā)送GET請求
response = requests.get('https://api.example.com/data')
# 如果響應(yīng)狀態(tài)碼不為200,拋出異常
response.raise_for_status()
# 輸出響應(yīng)內(nèi)容
print(response.text)
except requests.exceptions.HTTPError as http_error:
print("HTTP錯誤:", http_error)
except requests.exceptions.ConnectionError as connection_error:
print("連接錯誤:", connection_error)
except requests.exceptions.Timeout as timeout_error:
print("超時錯誤:", timeout_error)
except requests.exceptions.RequestException as request_exception:
print("其他錯誤:", request_exception)在上述代碼中,我們使用try...except語句進(jìn)行異常處理。如果響應(yīng)狀態(tài)碼不為200,則使用response.raise_for_status()拋出HTTPError異常。除了HTTPError異常,requests庫還可能拋出ConnectionError、Timeout和RequestException等異常。
12. 會話管理
有時候我們需要在多個請求之間保持一些狀態(tài)信息,可以使用Session對象進(jìn)行會話管理。
import requests
# 創(chuàng)建會話
session = requests.Session()
# 第一個請求
response1 = session.get('https://api.example.com/login')
# 第二個請求
response2 = session.post('https://api.example.com/data', data={'key': 'value'})
# 輸出響應(yīng)內(nèi)容
print(response2.text)在上述代碼中,我們使用requests.Session()創(chuàng)建一個會話對象session。在session對象中,第一個請求和第二個請求可以共享會話信息,例如登錄信息等。
13. SSL證書驗(yàn)證
在發(fā)送HTTPS請求時,默認(rèn)會驗(yàn)證服務(wù)器的SSL證書。如果不想驗(yàn)證,可以設(shè)置verify參數(shù)為False。
import requests
# 發(fā)送HTTPS請求,不驗(yàn)證SSL證書
response = requests.get('https://api.example.com/data', verify=False)
# 輸出響應(yīng)內(nèi)容
print(response.text)在上述代碼中,我們使用verify=False設(shè)置不驗(yàn)證SSL證書,發(fā)送HTTPS請求到https://api.example.com/data。
14. 代理設(shè)置
有時候我們需要通過代理服務(wù)器發(fā)送請求,可以通過proxies參數(shù)進(jìn)行設(shè)置。
import requests
# 設(shè)置代理
proxies = {'http': 'http://user:password@proxy.example.com',
'https': 'https://user:password@proxy.example.com'}
response = requests.get('https://api.example.com/data', proxies=proxies)
# 輸出響應(yīng)內(nèi)容
print(response.text)在上述代碼中,我們使用proxies參數(shù)設(shè)置代理,發(fā)送請求到https://api.example.com/data。
15. 總結(jié)
通過本文的講解,我們了解了requests庫的基本用法,從發(fā)送GET請求、發(fā)送帶參數(shù)的GET請求,到發(fā)送POST請求、發(fā)送帶參數(shù)的POST請求,再到發(fā)送JSON數(shù)據(jù)和文件,以及設(shè)置請求頭、超時時間,處理響應(yīng)和異常,會話管理,SSL證書驗(yàn)證和代理設(shè)置。
requests庫是發(fā)送HTTP請求的重要工具,熟練掌握它的使用將幫助我們在Python開發(fā)中更加靈活、高效地與網(wǎng)絡(luò)進(jìn)行交互。
到此這篇關(guān)于一文帶你玩轉(zhuǎn)python中的requests函數(shù)的文章就介紹到這了,更多相關(guān)python requests內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python使用修飾器執(zhí)行函數(shù)的參數(shù)檢查功能示例
這篇文章主要介紹了Python使用修飾器執(zhí)行函數(shù)的參數(shù)檢查功能,結(jié)合具體實(shí)例形式分析了Python實(shí)現(xiàn)修飾器針對函數(shù)參數(shù)檢查的原理、步驟與相關(guān)操作技巧,需要的朋友可以參考下2017-09-09
基于python實(shí)現(xiàn)計算且附帶進(jìn)度條代碼實(shí)例
這篇文章主要介紹了基于python實(shí)現(xiàn)計算且附帶進(jìn)度條代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-03-03
python opencv實(shí)現(xiàn)圖片旋轉(zhuǎn)矩形分割
這篇文章主要為大家詳細(xì)介紹了python opencv實(shí)現(xiàn)圖片旋轉(zhuǎn)矩形分割,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-07-07
Pytorch數(shù)據(jù)讀取與預(yù)處理該如何實(shí)現(xiàn)
這篇文章主要介紹了Pytorch數(shù)據(jù)讀取與預(yù)處理該如何實(shí)現(xiàn),幫助大家更好的理解和學(xué)習(xí)使用Pytorch,感興趣的朋友可以了解下2021-03-03
Python3實(shí)現(xiàn)配置文件差異對比腳本
這篇文章主要介紹了Python3實(shí)現(xiàn)配置文件差異對比腳本,本文通過案例場景分析給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-11-11

