最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python使用requests庫發(fā)送請求的示例代碼

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

前言

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

各種 HTTP 請求方法,不在話下

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

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

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

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

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

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

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

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

跌落谷底并不可怕,可怕的是茫然四顧卻束手無措。在Python的requests庫中,我們也可以很方便地使用異常處理機(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請求,并將響應(yīng)信息集合成實(shí)例對象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:,該語句進(jìn)行異常處理,用于捕獲requests庫中的HTTPError異常,并將其存儲(chǔ)在變量e中,以便對異常對象進(jìn)行訪問或處理

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

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

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

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

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

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

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

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

s = requests.Session()    # 創(chuàng)建一個(gè) Session 對象
s.get('https://httpbin.org/get')    # 發(fā)送 GET 請求
s.cookies.set('key','value')    # 設(shè)置 Cookies 參數(shù)
s.headers.update({'User-Agent':'Mozilla/5.0'})    # 設(shè)置headers參數(shù),自定義請求頭
  • s = requests.Session(),這里用requests.Session()方法構(gòu)建一個(gè)會(huì)話對象,并將其賦值給s
  • s.get('https://httpbin.org/get'),值得注意的是,該會(huì)話對象s的類型是requests.sessions.Session 類型對象,該類型對象可以像 requests.models.Response 類型對象一樣發(fā)送各類諸如GET、POST類型的HTTP請求。
  • s.cookies.set('key','value'),該語句通過使用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庫發(fā)送請求的示例代碼的文章就介紹到這了,更多相關(guān)Python requests發(fā)送請求內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python新手學(xué)習(xí)可變和不可變對象

    python新手學(xué)習(xí)可變和不可變對象

    在本篇文章里小編給大家分享了是一篇關(guān)于python可變對象和不可變對象的基礎(chǔ)知識(shí)點(diǎn)內(nèi)容,有需要的朋友們可以參考下。
    2020-06-06
  • python多繼承(鉆石繼承)問題和解決方法簡單示例

    python多繼承(鉆石繼承)問題和解決方法簡單示例

    這篇文章主要介紹了python多繼承(鉆石繼承)問題和解決方法,結(jié)合實(shí)例形式分析了Python多繼承調(diào)用父類初始化方法相關(guān)操作技巧,需要的朋友可以參考下
    2019-10-10
  • Python內(nèi)存泄漏和內(nèi)存溢出的解決方案

    Python內(nèi)存泄漏和內(nèi)存溢出的解決方案

    這篇文章主要介紹了Python內(nèi)存泄漏和內(nèi)存溢出的解決方案,幫助大家維護(hù)后臺(tái)進(jìn)程,感興趣的朋友可以了解下
    2020-09-09
  • 使用Pandas實(shí)現(xiàn)清洗客戶編碼異常數(shù)據(jù)

    使用Pandas實(shí)現(xiàn)清洗客戶編碼異常數(shù)據(jù)

    在不同行業(yè)中,我們經(jīng)常會(huì)遇到一個(gè)麻煩的問題:數(shù)據(jù)清洗,尤其是當(dāng)我們需要處理客戶編碼異常數(shù)據(jù)時(shí),下面小編就來和大家分享一下常用的解決辦法吧
    2023-07-07
  • Python 不同對象比較大小示例探討

    Python 不同對象比較大小示例探討

    不同對象比較是按照 type names 比較,當(dāng)相同類型對象不支持適當(dāng)比較的時(shí)候,采用 address 比較,需要的朋友可以參考下
    2014-08-08
  • Python項(xiàng)目進(jìn)行加密打包的實(shí)踐指南

    Python項(xiàng)目進(jìn)行加密打包的實(shí)踐指南

    在實(shí)際開發(fā)中,我們有時(shí)需要將 Python 項(xiàng)目交付給客戶或部署到不受控環(huán)境中,但又不希望源代碼被輕易查看甚至篡改,所以本文將基于一個(gè)自研的 Encryptor 工具類,分享如何實(shí)現(xiàn)一個(gè)輕量級、可擴(kuò)展的 Python 項(xiàng)目加密打包方案,需要的朋友可以參考下
    2026-01-01
  • Python異常原理及異常捕捉實(shí)現(xiàn)過程解析

    Python異常原理及異常捕捉實(shí)現(xiàn)過程解析

    這篇文章主要介紹了Python異常原理及異常捕捉實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Python讀取csv文件實(shí)例解析

    Python讀取csv文件實(shí)例解析

    這篇文章主要介紹了Python讀取csv文件實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Pyecharts圖表交互功能的實(shí)現(xiàn)

    Pyecharts圖表交互功能的實(shí)現(xiàn)

    本文主要介紹了Pyecharts圖表交互功能的實(shí)現(xiàn),提升數(shù)據(jù)可視化的用戶體驗(yàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01
  • python獲取代理IP的實(shí)例分享

    python獲取代理IP的實(shí)例分享

    今天小編就為大家分享一篇python獲取代理IP的實(shí)例分享,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05

最新評論

阿坝| 临泉县| 扬州市| 武定县| 醴陵市| 尖扎县| 深圳市| 名山县| 修文县| 乌兰察布市| 抚松县| 开远市| 客服| 仪征市| 南京市| 西林县| 曲松县| 吴桥县| 乌拉特中旗| 繁昌县| 溧水县| 侯马市| 高邑县| 聂拉木县| 曲周县| 格尔木市| 永胜县| 栖霞市| 姜堰市| 两当县| 嘉义县| 镇康县| 永吉县| 黄龙县| 扶绥县| 农安县| 日土县| 兴城市| 叙永县| 康保县| 米林县|