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

Python使用requests庫(kù)發(fā)送請(qǐng)求的示例代碼

 更新時(shí)間:2024年03月12日 08:35:44   作者:Shawn590  
與原生的urllib庫(kù)相比,requests庫(kù)提供了更簡(jiǎn)潔、易于理解和使用的API,使發(fā)送HTTP請(qǐng)求變得更加直觀和高效,所以本文給大家介紹了Python如何使用requests庫(kù)發(fā)送請(qǐng)求,需要的朋友可以參考下

前言

得益于各位技術(shù)大佬,經(jīng)過封裝后的requests庫(kù)提供了一系列的接口,讓我們可以更加便利地發(fā)送請(qǐng)求,管理Cookies和Session,以及驗(yàn)證代理等一系列操作。如果發(fā)現(xiàn)本文中有哪些錯(cuò)誤,請(qǐng)不吝指正。

各種 HTTP 請(qǐng)求方法,不在話下

與原生的urllib庫(kù)相比,requests庫(kù)提供了更簡(jiǎn)潔、易于理解和使用的API,使發(fā)送HTTP請(qǐng)求變得更加直觀和高效

import requests    # 導(dǎo)入工具包

r = requests.get('https://httpbin.org/get')    # GET 請(qǐng)求

print(r.status_code)    # 狀態(tài)碼
print(r.headers)    # 請(qǐng)求頭
print(type(r))    # 類型

在這里,我們直接調(diào)用requests.get()函數(shù),打開URL,并將返回的信息集合成一個(gè)對(duì)象,并賦值給r。于是,我們便可以通過r這個(gè)requests.models.Response 類型對(duì)象屬性,來查看狀態(tài)碼等響應(yīng)信息。

神奇的是,不僅GET請(qǐng)求可以這樣做,PUT、DELETE等請(qǐng)求也可以如此這般:

r = requests.post('https://httpbin.org/post', data={'key': 'value'})    # POST 請(qǐng)求
r = requests.put('https://httpbin.org/put', data={'key': 'value'})    # PUT 請(qǐng)求
r = requests.delete('https://httpbin.org/delete')    # DELETE 請(qǐng)求
r = requests.head('https://httpbin.org/get')    # HEAD 請(qǐng)求
r = requests.options('https://httpbin.org/get')    # OPTIONS 請(qǐng)求

糟糕糟糕,請(qǐng)求錯(cuò)誤OMG

跌落谷底并不可怕,可怕的是茫然四顧卻束手無措。在Python的requests庫(kù)中,我們也可以很方便地使用異常處理機(jī)制來有效捕捉和處理各種不同的異常。

import requests    # 導(dǎo)入工具包    

try:    # 用try和except塊捕捉可能的異常
    response = requests.get('https://baidu.com')
    response.raise_for_status()
except requests.exception.HTTPError as e:
    print('HTTP 錯(cuò)誤:', e)
  • response = requests.get('https://baidu.com'),如同上面所說,用requests.get()方法發(fā)出HTTP請(qǐng)求,并將響應(yīng)信息集合成實(shí)例對(duì)象response
  • response.raise_for_status(),該方法用來檢查響應(yīng)信息的狀態(tài)碼,如果狀態(tài)碼是一個(gè)錯(cuò)誤(比如404 Not Found500 Internal Server Error等),則會(huì)引發(fā)requests.exceptions.HTTPError異常,從而使代碼跳轉(zhuǎn)except模塊,方便處理異常
  • except requests.exception.HTTPError as e:,該語(yǔ)句進(jìn)行異常處理,用于捕獲requests庫(kù)中的HTTPError異常,并將其存儲(chǔ)在變量e中,以便對(duì)異常對(duì)象進(jìn)行訪問或處理

當(dāng)然,請(qǐng)求錯(cuò)誤有很多類型,不止剛才提到的HTTP錯(cuò)誤異常(HTTPError),還有連接異常(ConnectionError)超時(shí)異常(Timeout) 等異常情況。要想捕捉這些異常也非常簡(jiǎn)單,只需要把except requests.exception.HTTPError as e:語(yǔ)句中的HTTPError改成相應(yīng)的異常名稱即可。

Session會(huì)話,持久高效

在urllin庫(kù)中,Session會(huì)話狀態(tài)不易維護(hù),我們需要手動(dòng)管理每個(gè)請(qǐng)求的cookies,代碼量較大且不夠簡(jiǎn)潔。而requests庫(kù)提供了非常靈活的管理接口,可以輕松地在多個(gè)會(huì)話之間保持會(huì)話狀態(tài)信息。

作為新手,我常?;煜?strong>Session和Cookies這兩者的概念。事實(shí)上,由于各個(gè)HTTP請(qǐng)求是無狀態(tài)相互獨(dú)立的,服務(wù)器為了跟蹤用戶的狀態(tài)信息,便提供一種機(jī)制,使其可以識(shí)別在短時(shí)間內(nèi)多個(gè)不同的HTTP請(qǐng)求是同一個(gè)用戶發(fā)出的,從而提供更多個(gè)性化服務(wù)。這種機(jī)制,便是會(huì)話(Session)

那么,服務(wù)器是如何識(shí)別這多個(gè)不同的HTTP請(qǐng)求是同一個(gè)用戶發(fā)出的呢?

通過用戶發(fā)送的HTTP請(qǐng)求信息中的一個(gè)令牌。這令牌,便是唯一會(huì)話標(biāo)識(shí)符(Session ID)。當(dāng)服務(wù)器第一次接收到用戶的HTTP請(qǐng)求時(shí),便給用戶發(fā)送這個(gè)唯一會(huì)話標(biāo)識(shí)符(Session ID),那么只要當(dāng)之后瀏覽器等客戶端每一次發(fā)送HTTP請(qǐng)求時(shí),帶上這個(gè)令牌,服務(wù)器便可以識(shí)別不同的HTTP請(qǐng)求是同一個(gè)用戶發(fā)出的。在瀏覽器等客戶端中,維護(hù)這令牌的,便是Cookies。

于是在實(shí)際爬蟲中,我們?nèi)绻行枰?,便可以去維護(hù)Cookies,從而讓服務(wù)器能夠長(zhǎng)久地維護(hù)Session會(huì)話。

import requests    # 導(dǎo)入工具包

s = requests.Session()    # 創(chuàng)建一個(gè) Session 對(duì)象
s.get('https://httpbin.org/get')    # 發(fā)送 GET 請(qǐng)求
s.cookies.set('key','value')    # 設(shè)置 Cookies 參數(shù)
s.headers.update({'User-Agent':'Mozilla/5.0'})    # 設(shè)置headers參數(shù),自定義請(qǐng)求頭
  • s = requests.Session(),這里用requests.Session()方法構(gòu)建一個(gè)會(huì)話對(duì)象,并將其賦值給s。
  • s.get('https://httpbin.org/get'),值得注意的是,該會(huì)話對(duì)象s的類型是requests.sessions.Session 類型對(duì)象,該類型對(duì)象可以像 requests.models.Response 類型對(duì)象一樣發(fā)送各類諸如GET、POST類型的HTTP請(qǐng)求。
  • s.cookies.set('key','value'),該語(yǔ)句通過使用cookies參數(shù)來設(shè)置cookies
  • s.headers.update({'User-Agent':'Mozilla/5.0'}),該代碼使用headers參數(shù)設(shè)置 headers,其中不僅可以包括User-Agent客戶端類型表示,還可以包括Accept客戶端可接受內(nèi)容類型、Authorization身份驗(yàn)證信息等

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

相關(guān)文章

  • wxPython多個(gè)窗口的基本結(jié)構(gòu)

    wxPython多個(gè)窗口的基本結(jié)構(gòu)

    這篇文章主要為大家詳細(xì)介紹了wxPython多個(gè)窗口的基本結(jié)構(gòu),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • python3中rsa加密算法詳情

    python3中rsa加密算法詳情

    這篇文章主要介紹了python3中rsa加密算法詳情,rsa加密,是一種加密算法,目前而言,加密算法,是對(duì)數(shù)據(jù)、密碼等進(jìn)行加密,下文更多相關(guān)介紹,需要的小伙伴可以參考一下
    2022-05-05
  • Python實(shí)現(xiàn)自動(dòng)計(jì)算特定格式的時(shí)間差

    Python實(shí)現(xiàn)自動(dòng)計(jì)算特定格式的時(shí)間差

    這篇文章主要介紹了利用Python實(shí)現(xiàn)在輸入一個(gè)特定格式的時(shí)間后,自動(dòng)獲取前進(jìn)或者后退多少小時(shí)之后的時(shí)間。感興趣的朋友可以了解一下
    2021-12-12
  • python測(cè)試攻略pytest.main()隱藏利器實(shí)例探究

    python測(cè)試攻略pytest.main()隱藏利器實(shí)例探究

    在Pytest測(cè)試框架中,pytest.main()是一個(gè)重要的功能,用于啟動(dòng)測(cè)試執(zhí)行,它允許以不同方式運(yùn)行測(cè)試,傳遞參數(shù)和配置選項(xiàng),本文將深入探討pytest.main()的核心功能,提供豐富的示例代碼和更全面的內(nèi)容,
    2024-01-01
  • Python實(shí)現(xiàn)階乘的四種寫法

    Python實(shí)現(xiàn)階乘的四種寫法

    本文主要介紹了Python實(shí)現(xiàn)階乘的六種寫法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01
  • Python異步編程之協(xié)程任務(wù)的調(diào)度操作實(shí)例分析

    Python異步編程之協(xié)程任務(wù)的調(diào)度操作實(shí)例分析

    這篇文章主要介紹了Python異步編程之協(xié)程任務(wù)的調(diào)度操作,結(jié)合實(shí)例形式分析了Python異步編程中協(xié)程任務(wù)的調(diào)度相關(guān)原理、實(shí)現(xiàn)方法與操作注意事項(xiàng),需要的朋友可以參考下
    2020-02-02
  • Windows下PyCharm配置Anaconda環(huán)境(超詳細(xì)教程)

    Windows下PyCharm配置Anaconda環(huán)境(超詳細(xì)教程)

    這篇文章主要介紹了Windows下PyCharm配置Anaconda環(huán)境,本文給大家分享一篇超詳細(xì)教程,通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Python中Django與Echarts的結(jié)合用法圖文詳解

    Python中Django與Echarts的結(jié)合用法圖文詳解

    ECharts是一個(gè)第三方控件,下面這篇文章主要給大家介紹了關(guān)于Python中Django與Echarts的結(jié)合用法,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-10-10
  • python -m pip install 和 pip install 的區(qū)別解析

    python -m pip install 和 pip in

    python -m pip install <package> 使用了 -m 參數(shù)來確保以 Python 模塊的形式運(yùn)行 pip,適用于確保在不同的環(huán)境中正確使用 pip,這篇文章主要介紹了python -m pip install 和 pip install 的區(qū)別,需要的朋友可以參考下
    2023-07-07
  • Python基于機(jī)器學(xué)習(xí)方法實(shí)現(xiàn)的電影推薦系統(tǒng)實(shí)例詳解

    Python基于機(jī)器學(xué)習(xí)方法實(shí)現(xiàn)的電影推薦系統(tǒng)實(shí)例詳解

    這篇文章主要介紹了Python基于機(jī)器學(xué)習(xí)方法實(shí)現(xiàn)的電影推薦系統(tǒng),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-06-06

最新評(píng)論