欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python中的HTTP請求庫Requests的具體使用

 更新時間:2023年12月24日 09:19:52   作者:tester Jeffky  
Python作為一種功能強大且易于學(xué)習(xí)的編程語言,提供了許多用于處理HTTP請求的庫,其中,Requests庫是最受歡迎的選擇之一,本文主要介紹了Python中的HTTP請求庫Requests的具體使用,感興趣的可以了解一下

在現(xiàn)代軟件開發(fā)中,與Web服務(wù)進行交互已經(jīng)成為一種常見的需求。無論是構(gòu)建API、爬蟲還是自動化測試,都需要向服務(wù)器發(fā)送HTTP請求并處理響應(yīng)。Python作為一種功能強大且易于學(xué)習(xí)的編程語言,提供了許多用于處理HTTP請求的庫。其中,Requests庫是最受歡迎的選擇之一。本文將介紹Requests庫的基本用法和一些高級特性,幫助讀者更好地理解和利用這個強大的工具。

  • Requests庫簡介

Requests庫是一個簡潔而優(yōu)雅的Python HTTP庫,它的目標(biāo)是使HTTP請求變得簡單易用。通過Requests庫,我們可以方便地向服務(wù)器發(fā)送GET、POST、PUT、DELETE等不同類型的HTTP請求,并處理服務(wù)器返回的響應(yīng)數(shù)據(jù)。Requests庫的設(shè)計哲學(xué)是“人類可讀”和“友好”,使得開發(fā)者可以更加專注于業(yè)務(wù)邏輯的實現(xiàn),而不需要花費大量時間處理底層的網(wǎng)絡(luò)細(xì)節(jié)。

  • 安裝Requests庫

要使用Requests庫,首先需要將其安裝到Python環(huán)境中??梢酝ㄟ^以下命令使用pip工具安裝Requests庫:

pip install requests

安裝完成后,可以在Python代碼中通過import requests語句導(dǎo)入Requests庫。
以下是一些常用的Requests方法及其功能:

1. `r.status_code`:獲取響應(yīng)狀態(tài)碼,如200表示成功,404表示未找到等。
2. `r.content`:以字節(jié)方式獲取響應(yīng)體,會自動解碼gzip和deflate壓縮。
3. `r.headers`:以字典對象存儲服務(wù)器響應(yīng)頭,若鍵不存在則返回None。
4. `r.json()`:Requests中內(nèi)置的JSON解析方法,將響應(yīng)體解析為Python字典或列表。
5. `r.url`:獲取請求的URL。
6. `r.encoding`:獲取響應(yīng)的編碼格式。
7. `r.cookies`:獲取響應(yīng)中的cookie。
8. `r.raw`:返回原始響應(yīng)體。
9. `r.text`:以字符串方式獲取響應(yīng)體,會自動根據(jù)響應(yīng)頭部的字符編碼進行解碼。
10. `r.raise_for_status()`:如果請求失?。ǚ?00響應(yīng)),則拋出異常。

使用Requests庫的基本步驟如下:

1. 導(dǎo)入requests庫:`import requests`
2. 發(fā)送請求:`r = requests.get(url)` 或 `r = requests.post(url, data=data)` 等。
3. 獲取響應(yīng)狀態(tài)碼:`r.status_code`
4. 獲取響應(yīng)內(nèi)容:`r.content` 或 `r.text`
5. 獲取響應(yīng)頭:`r.headers`
6. 解析響應(yīng)體為JSON:`r.json()`
7. 獲取請求的URL:`r.url`
8. 獲取響應(yīng)的編碼格式:`r.encoding`
9. 獲取響應(yīng)中的cookie:`r.cookies`
10. 獲取原始響應(yīng)體:`r.raw`
11. 如果請求失敗,拋出異常:`r.raise_for_status()`

  • 發(fā)送GET請求

GET請求是最常見的HTTP請求類型,用于從服務(wù)器獲取資源。使用Requests庫發(fā)送GET請求非常簡單,只需要調(diào)用requests.get()函數(shù)并傳入URL參數(shù)即可。以下是一個簡單的示例:

import requests

url = 'https://www.baidu.com'
response = requests.get(url)

print(response.text)

在這個示例中,我們向https://www.baidu.com發(fā)送了一個GET請求,并將響應(yīng)內(nèi)容打印出來。需要注意的是,response.text屬性包含了服務(wù)器返回的原始文本數(shù)據(jù),如果響應(yīng)內(nèi)容是JSON格式,可以使用response.json()方法將其解析為Python對象。

  • 發(fā)送POST請求

POST請求用于向服務(wù)器提交數(shù)據(jù),通常用于創(chuàng)建新資源或更新現(xiàn)有資源。使用Requests庫發(fā)送POST請求也非常簡單,只需要調(diào)用requests.post()函數(shù)并傳入URL和數(shù)據(jù)參數(shù)即可。以下是一個簡單的示例:

import requests

data = {'wd': 'Python'}
response = requests.post('https://www.baidu.com/s', data=data)

print(response.text)

在這個示例中,我們向https://www.baidu.com/s發(fā)送了一個POST請求,并將數(shù)據(jù)以字典的形式傳遞給data參數(shù)。需要注意的是,POST請求的數(shù)據(jù)通常以表單形式或JSON格式提交,可以通過設(shè)置headers參數(shù)來指定數(shù)據(jù)的格式。例如,如果要以JSON格式提交數(shù)據(jù),可以設(shè)置headers{'Content-Type': 'application/json'}

  • 處理響應(yīng)狀態(tài)碼和異常

在發(fā)送HTTP請求時,我們需要關(guān)注服務(wù)器返回的狀態(tài)碼,以便了解請求是否成功以及如何處理錯誤情況。Requests庫提供了一些方便的方法來處理響應(yīng)狀態(tài)碼和異常。以下是一些常用的方法:

  • response.status_code:獲取響應(yīng)的狀態(tài)碼。例如,如果狀態(tài)碼為200,表示請求成功;如果狀態(tài)碼為404,表示找不到資源。
  • response.raise_for_status():如果響應(yīng)的狀態(tài)碼表示錯誤(非2xx),則拋出異常。這可以幫助我們及時發(fā)現(xiàn)并處理錯誤情況。例如:
response = requests.get('https://www.baidu.com')
response.raise_for_status()  # 如果狀態(tài)碼不是2xx,拋出異常
  • 設(shè)置請求頭和Cookies

有時候,我們需要在HTTP請求中設(shè)置特定的請求頭或Cookies。Requests庫提供了一些方法來實現(xiàn)這一功能。以下是一些常用的方法:

  • requests.get(url, headers={'User-Agent': 'Mozilla/5.0'}):在GET請求中設(shè)置請求頭。例如,我們可以設(shè)置User-Agent來模擬不同的瀏覽器或設(shè)備。
  • requests.get(url, cookies={'session': '123456789'}):在GET請求中設(shè)置Cookies。例如,我們可以使用會話ID來保持用戶登錄狀態(tài)。
  • requests.post(url, data=data, headers={'Content-Type': 'application/json'}, cookies={'session': '123456789'}):在POST請求中設(shè)置請求頭和Cookies。例如,我們可以同時設(shè)置數(shù)據(jù)格式和會話ID。
  • 超時和重試機制

在發(fā)送HTTP請求時,可能會遇到網(wǎng)絡(luò)延遲、服務(wù)器故障等問題導(dǎo)致請求失敗。為了提高程序的健壯性,我們可以使用Requests庫提供的超時和重試機制。以下是一些常用的方法:

  • requests.get(url, timeout=5):設(shè)置GET請求的超時時間為5秒。如果超過5秒還沒有收到響應(yīng),將拋出異常。
  • requests.Session().mount('http://', requests_retry.Retry()):使用重試機制來處理HTTP請求。例如,我們可以使用requests_retry庫來實現(xiàn)自動重試功能。具體使用方法可以參考該庫的文檔。
  • 其他高級特性

除了上述基本用法外,Requests庫還提供了許多其他高級特性,如代理、身份驗證、文件上傳等。這些特性可以幫助我們更靈活地處理各種HTTP場景。以下是一些常用的高級特性:

  • requests.get(url, proxies={'http': 'http://user:password@proxy:port', 'https': 'https://user:password@proxy:port'}):使用代理服務(wù)器發(fā)送HTTP請求。例如,我們可以使用代理服務(wù)器來繞過網(wǎng)絡(luò)限制或提高訪問速度。
  • 封裝requests公共方法
import requests

class Request:
    def requests_api(self, url, data=None, json=None, headers=None, cookies=None, method="get"):
        if method == "get":
            r = requests.get(url, data=data, json=json, headers=headers, cookies=cookies)
        elif method == "post":
            r = requests.post(url, data=data, json=json, headers=headers, cookies=cookies)

        code = r.status_code
        try:
            body = r.json()
        except Exception as e:
            body = r.text
        res = dict()
        res["code"] = code
        res["body"] = body
        return res
    def get(self, url, **kwargs):
        return self.requests_api(url, method="get", **kwargs)
    def post(self, url, **kwargs):
        return self.requests_api(url, method="post", **kwargs)
  • 這個類的作用是封裝了requests庫中的get和post方法,使得發(fā)送HTTP請求更加方便。通過調(diào)用get或post方法,可以向指定的URL發(fā)送GET或POST請求,并獲取響應(yīng)的狀態(tài)碼和內(nèi)容。
  • 在requests_api方法中,根據(jù)傳入的method參數(shù)選擇使用requests.get或requests.post方法發(fā)送請求。然后,將響應(yīng)的狀態(tài)碼存儲在變量code中,嘗試將響應(yīng)的內(nèi)容解析為JSON格式,如果解析失敗則使用原始文本作為響應(yīng)內(nèi)容。最后,將狀態(tài)碼和響應(yīng)內(nèi)容存儲在一個字典中,并返回該字典作為結(jié)果。
  • 另外,get和post方法都是通過調(diào)用requests_api方法來實現(xiàn)的,它們分別傳入不同的HTTP方法參數(shù)(“get"或"post”),并將其他參數(shù)傳遞給requests_api方法。這樣,用戶可以通過調(diào)用這兩個方法來發(fā)送不同類型的HTTP請求。

到此這篇關(guān)于Python中的HTTP請求庫Requests的具體使用的文章就介紹到這了,更多相關(guān)Python Requests內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • python標(biāo)準(zhǔn)庫random模塊處理隨機數(shù)

    python標(biāo)準(zhǔn)庫random模塊處理隨機數(shù)

    這篇文章主要介紹了python標(biāo)準(zhǔn)庫random模塊處理隨機數(shù),random模塊實現(xiàn)了各種分布的偽隨機數(shù)生成器,具體介紹感興趣的小伙伴可以參考一下
    2022-09-09
  • CentOS系統(tǒng)上安裝Conda的詳細(xì)指南

    CentOS系統(tǒng)上安裝Conda的詳細(xì)指南

    Conda 是一個開源的包管理系統(tǒng)和環(huán)境管理系統(tǒng),廣泛應(yīng)用于數(shù)據(jù)科學(xué)和機器學(xué)習(xí)領(lǐng)域,本文將詳細(xì)介紹如何在 CentOS 系統(tǒng)上安裝 Conda吧
    2025-03-03
  • python操作RabbitMq的三種工作模式

    python操作RabbitMq的三種工作模式

    這篇文章主要為大家介紹了python操作RabbitMq的三種工作模式,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪
    2022-04-04
  • Python:__eq__和__str__函數(shù)的使用示例

    Python:__eq__和__str__函數(shù)的使用示例

    這篇文章主要介紹了Python:__eq__和__str__函數(shù)的使用示例,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-09-09
  • python+requests+pytest接口自動化的實現(xiàn)示例

    python+requests+pytest接口自動化的實現(xiàn)示例

    這篇文章主要介紹了python+requests+pytest接口自動化的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • TensorFlow實現(xiàn)AutoEncoder自編碼器

    TensorFlow實現(xiàn)AutoEncoder自編碼器

    這篇文章主要為大家詳細(xì)介紹了TensorFlow實現(xiàn)AutoEncoder自編碼器,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • Flask框架信號用法實例分析

    Flask框架信號用法實例分析

    這篇文章主要介紹了Flask框架信號用法,結(jié)合實例形式分析了Blinker的安裝及信號的接收等相關(guān)操作技巧,需要的朋友可以參考下
    2018-07-07
  • Python中 Global和Nonlocal的用法詳解

    Python中 Global和Nonlocal的用法詳解

    global關(guān)鍵字用來在函數(shù)或其他局部作用域中使用全局變量, nonlocal聲明的變量不是局部變量,也不是全局變量,而是外部嵌套函數(shù)內(nèi)的變量。這篇文章主要介紹了Python中 Global和Nonlocal的用法,需要的朋友可以參考下
    2020-01-01
  • CPython 垃圾收集器檢測循環(huán)引用詳解

    CPython 垃圾收集器檢測循環(huán)引用詳解

    這篇文章主要為大家介紹了CPython 垃圾收集器檢測循環(huán)引用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • Python?Tkinter庫從入門到進階使用教程

    Python?Tkinter庫從入門到進階使用教程

    Tkinter是Python標(biāo)準(zhǔn)庫中內(nèi)置的圖形用戶界面(GUI)工具包,提供了創(chuàng)建窗口、按鈕、文本框等GUI元素的功能,本文將介紹Tkinter的基礎(chǔ)知識,幫助大家快速入門
    2023-12-12

最新評論