一文帶你玩轉(zhuǎn)python中的requests函數(shù)
介紹
在Python中,requests庫(kù)是用于發(fā)送HTTP請(qǐng)求的常用庫(kù)。它提供了簡(jiǎn)潔易用的接口,使得發(fā)送HTTP請(qǐng)求變得非常簡(jiǎn)單。本文將深入探討requests庫(kù)的使用方法,從入門(mén)到精通。
1. 安裝requests庫(kù)
在使用requests庫(kù)之前,我們需要先安裝它。可以使用以下命令來(lái)安裝requests庫(kù):
pip install requests
2. 發(fā)送GET請(qǐng)求
requests庫(kù)中的get()函數(shù)可以用于發(fā)送GET請(qǐng)求。
import requests # 發(fā)送GET請(qǐng)求 response = requests.get('https://api.example.com/data') # 輸出響應(yīng)內(nèi)容 print(response.text)
在上述代碼中,我們使用requests.get()函數(shù)發(fā)送GET請(qǐng)求到https://api.example.com/data,并將響應(yīng)保存在變量response中。然后,使用response.text打印響應(yīng)內(nèi)容。
3. 發(fā)送帶參數(shù)的GET請(qǐng)求
有時(shí)候我們需要發(fā)送帶參數(shù)的GET請(qǐng)求。
import requests # 發(fā)送帶參數(shù)的GET請(qǐng)求 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請(qǐng)求到https://api.example.com/data,并將響應(yīng)保存在變量response中。
4. 發(fā)送POST請(qǐng)求
requests庫(kù)中的post()函數(shù)可以用于發(fā)送POST請(qǐng)求。
import requests # 發(fā)送POST請(qǐng)求 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請(qǐng)求到https://api.example.com/data,并將響應(yīng)保存在變量response中。
5. 發(fā)送帶參數(shù)的POST請(qǐng)求
有時(shí)候我們需要發(fā)送帶參數(shù)的POST請(qǐng)求。
import requests # 發(fā)送帶參數(shù)的POST請(qǐng)求 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請(qǐng)求到https://api.example.com/data,并將響應(yīng)保存在變量response中。
6. 發(fā)送JSON數(shù)據(jù)
requests庫(kù)中的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請(qǐng)求到https://api.example.com/data,并將響應(yīng)保存在變量response中。
7. 發(fā)送文件
requests庫(kù)中的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請(qǐng)求到https://api.example.com/upload,并將響應(yīng)保存在變量response中。
8. 設(shè)置請(qǐng)求頭
有時(shí)候我們需要設(shè)置請(qǐng)求頭,以便向服務(wù)器傳遞更多信息。
import requests # 設(shè)置請(qǐng)求頭 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è)置請(qǐng)求頭,發(fā)送GET請(qǐng)求到https://api.example.com/data,并將響應(yīng)保存在變量response中。
9. 設(shè)置超時(shí)時(shí)間
在發(fā)送請(qǐng)求時(shí),有時(shí)候我們需要設(shè)置超時(shí)時(shí)間,防止請(qǐng)求時(shí)間過(guò)長(zhǎng)。
import requests # 設(shè)置超時(shí)時(shí)間為5秒 timeout = 5 response = requests.get('https://api.example.com/data', timeout=timeout) # 輸出響應(yīng)內(nèi)容 print(response.text)
在上述代碼中,我們使用timeout參數(shù)設(shè)置超時(shí)時(shí)間為5秒,發(fā)送GET請(qǐng)求到https://api.example.com/data,并將響應(yīng)保存在變量response中。
10. 處理響應(yīng)
requests庫(kù)返回的響應(yīng)是一個(gè)Response對(duì)象,我們可以通過(guò)該對(duì)象獲取響應(yīng)的各種信息。
import requests # 發(fā)送GET請(qǐng)求 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ā)送請(qǐng)求時(shí),可能會(huì)發(fā)生一些異常,我們需要進(jìn)行適當(dāng)?shù)漠惓L幚怼?/p>
import requests try: # 發(fā)送GET請(qǐng)求 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錯(cuò)誤:", http_error) except requests.exceptions.ConnectionError as connection_error: print("連接錯(cuò)誤:", connection_error) except requests.exceptions.Timeout as timeout_error: print("超時(shí)錯(cuò)誤:", timeout_error) except requests.exceptions.RequestException as request_exception: print("其他錯(cuò)誤:", request_exception)
在上述代碼中,我們使用try...except語(yǔ)句進(jìn)行異常處理。如果響應(yīng)狀態(tài)碼不為200,則使用response.raise_for_status()拋出HTTPError異常。除了HTTPError異常,requests庫(kù)還可能拋出ConnectionError、Timeout和RequestException等異常。
12. 會(huì)話管理
有時(shí)候我們需要在多個(gè)請(qǐng)求之間保持一些狀態(tài)信息,可以使用Session對(duì)象進(jìn)行會(huì)話管理。
import requests # 創(chuàng)建會(huì)話 session = requests.Session() # 第一個(gè)請(qǐng)求 response1 = session.get('https://api.example.com/login') # 第二個(gè)請(qǐng)求 response2 = session.post('https://api.example.com/data', data={'key': 'value'}) # 輸出響應(yīng)內(nèi)容 print(response2.text)
在上述代碼中,我們使用requests.Session()創(chuàng)建一個(gè)會(huì)話對(duì)象session。在session對(duì)象中,第一個(gè)請(qǐng)求和第二個(gè)請(qǐng)求可以共享會(huì)話信息,例如登錄信息等。
13. SSL證書(shū)驗(yàn)證
在發(fā)送HTTPS請(qǐng)求時(shí),默認(rèn)會(huì)驗(yàn)證服務(wù)器的SSL證書(shū)。如果不想驗(yàn)證,可以設(shè)置verify參數(shù)為False。
import requests # 發(fā)送HTTPS請(qǐng)求,不驗(yàn)證SSL證書(shū) response = requests.get('https://api.example.com/data', verify=False) # 輸出響應(yīng)內(nèi)容 print(response.text)
在上述代碼中,我們使用verify=False設(shè)置不驗(yàn)證SSL證書(shū),發(fā)送HTTPS請(qǐng)求到https://api.example.com/data。
14. 代理設(shè)置
有時(shí)候我們需要通過(guò)代理服務(wù)器發(fā)送請(qǐng)求,可以通過(guò)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ā)送請(qǐng)求到https://api.example.com/data。
15. 總結(jié)
通過(guò)本文的講解,我們了解了requests庫(kù)的基本用法,從發(fā)送GET請(qǐng)求、發(fā)送帶參數(shù)的GET請(qǐng)求,到發(fā)送POST請(qǐng)求、發(fā)送帶參數(shù)的POST請(qǐng)求,再到發(fā)送JSON數(shù)據(jù)和文件,以及設(shè)置請(qǐng)求頭、超時(shí)時(shí)間,處理響應(yīng)和異常,會(huì)話管理,SSL證書(shū)驗(yàn)證和代理設(shè)置。
requests庫(kù)是發(fā)送HTTP請(qǐng)求的重要工具,熟練掌握它的使用將幫助我們?cè)赑ython開(kāi)發(fā)中更加靈活、高效地與網(wǎng)絡(luò)進(jìn)行交互。
到此這篇關(guān)于一文帶你玩轉(zhuǎn)python中的requests函數(shù)的文章就介紹到這了,更多相關(guān)python requests內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實(shí)現(xiàn)文本特征提取的方法詳解
這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)提取四種不同文本特征的方法,有字典文本特征提取、英文文本特征提取、中文文本特征提取和TF-IDF 文本特征提取,感興趣的可以了解一下2022-08-08pandas DataFrame 賦值的注意事項(xiàng)說(shuō)明(index)
這篇文章主要介紹了pandas DataFrame 賦值的注意事項(xiàng)說(shuō)明(index),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04python opencv檢測(cè)直線 cv2.HoughLinesP的實(shí)現(xiàn)
cv2.HoughLines()函數(shù)是在二值圖像中查找直線,本文結(jié)合示例詳細(xì)的介紹了cv2.HoughLinesP的用法,感興趣的可以了解一下2021-06-06python二叉樹(shù)遍歷的實(shí)現(xiàn)方法
這篇文章主要介紹了python二叉樹(shù)遍歷的實(shí)現(xiàn)方法,使用了三種遍歷:先序遍歷,中序遍歷,后序遍歷,方法大家參考使用2013-11-11win10環(huán)境下配置vscode python開(kāi)發(fā)環(huán)境的教程詳解
這篇文章主要介紹了win10環(huán)境下配置python開(kāi)發(fā)環(huán)境(vscode)的教程,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-10-10python中sleep函數(shù)用法實(shí)例分析
這篇文章主要介紹了python中sleep函數(shù)用法,實(shí)例分析了sleep函數(shù)的功能及使用技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04Python利用Flask動(dòng)態(tài)生成漢字頭像
這篇文章主要為大家詳細(xì)介紹了Python如何利用Flask動(dòng)態(tài)生成一個(gè)漢字頭像,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定的幫助,需要的可以參考一下2023-01-01