亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python中的HTTP請(qǐng)求庫(kù)Requests的具體使用

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

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

  • Requests庫(kù)簡(jiǎn)介

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

  • 安裝Requests庫(kù)

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

pip install requests

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

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

使用Requests庫(kù)的基本步驟如下:

1. 導(dǎo)入requests庫(kù):`import requests`
2. 發(fā)送請(qǐng)求:`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. 獲取請(qǐng)求的URL:`r.url`
8. 獲取響應(yīng)的編碼格式:`r.encoding`
9. 獲取響應(yīng)中的cookie:`r.cookies`
10. 獲取原始響應(yīng)體:`r.raw`
11. 如果請(qǐng)求失敗,拋出異常:`r.raise_for_status()`

  • 發(fā)送GET請(qǐng)求

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

import requests

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

print(response.text)

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

  • 發(fā)送POST請(qǐng)求

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

import requests

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

print(response.text)

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

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

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

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

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

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

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

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

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

  • requests.get(url, proxies={'http': 'http://user:password@proxy:port', 'https': 'https://user:password@proxy:port'}):使用代理服務(wù)器發(fā)送HTTP請(qǐng)求。例如,我們可以使用代理服務(wù)器來(lái)繞過(guò)網(wǎng)絡(luò)限制或提高訪問(wèn)速度。
  • 封裝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)
  • 這個(gè)類(lèi)的作用是封裝了requests庫(kù)中的get和post方法,使得發(fā)送HTTP請(qǐng)求更加方便。通過(guò)調(diào)用get或post方法,可以向指定的URL發(fā)送GET或POST請(qǐng)求,并獲取響應(yīng)的狀態(tài)碼和內(nèi)容。
  • 在requests_api方法中,根據(jù)傳入的method參數(shù)選擇使用requests.get或requests.post方法發(fā)送請(qǐng)求。然后,將響應(yīng)的狀態(tài)碼存儲(chǔ)在變量code中,嘗試將響應(yīng)的內(nèi)容解析為JSON格式,如果解析失敗則使用原始文本作為響應(yīng)內(nèi)容。最后,將狀態(tài)碼和響應(yīng)內(nèi)容存儲(chǔ)在一個(gè)字典中,并返回該字典作為結(jié)果。
  • 另外,get和post方法都是通過(guò)調(diào)用requests_api方法來(lái)實(shí)現(xiàn)的,它們分別傳入不同的HTTP方法參數(shù)(“get"或"post”),并將其他參數(shù)傳遞給requests_api方法。這樣,用戶(hù)可以通過(guò)調(diào)用這兩個(gè)方法來(lái)發(fā)送不同類(lèi)型的HTTP請(qǐng)求。

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

相關(guān)文章

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

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

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

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

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

    python操作RabbitMq的三種工作模式

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

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

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

    python+requests+pytest接口自動(dòng)化的實(shí)現(xiàn)示例

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

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

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

    Flask框架信號(hào)用法實(shí)例分析

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

    Python中 Global和Nonlocal的用法詳解

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

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

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

    Python?Tkinter庫(kù)從入門(mén)到進(jìn)階使用教程

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

最新評(píng)論