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

Python中requests.session()的用法小結(jié)

 更新時間:2022年11月18日 11:21:29   作者:craftsman2020  
這篇文章主要介紹了Python中requests.session()的用法小結(jié),可能大家對?session?已經(jīng)比較熟悉了,也大概了解了session的機制和原理,但是我們在做爬蟲時如何會運用到session呢,接下來要講到會話保持,需要的朋友可以參考下

可能大家對 session 已經(jīng)比較熟悉了,也大概了解了session的機制和原理,但是我們在做爬蟲時如何會運用到session呢,就是接下來要講到的會話保持。

首先說一下,為什么要進行會話保持的操作?

session定義

requests庫的session會話對象可以跨請求保持某些參數(shù),說白了,就是比如你使用session成功的登錄了某個網(wǎng)站,則在再次使用該session對象請求該網(wǎng)站的其他網(wǎng)頁都會默認使用該session之前使用的cookie等參數(shù)。

尤其是在保持登陸狀態(tài)時運用的最多,在某些網(wǎng)站抓取,或者app抓取時,有時強制登陸,有的是不登陸返回的數(shù)據(jù)就是假的或者說是不完整的數(shù)據(jù),那我們不可能去做到每一次請求都要去登陸一下怎么辦,就需要用到保持會話的功能了,我們可以只登陸一次,然后保持這種狀態(tài)去做其他的或者更多的請求。

其次,我們該如何使用會話保持?舉一個事例來說明一下:

session使用實例

http協(xié)議本身是無狀態(tài)的,為了讓請求之間保持狀態(tài),有了session和cookie機制。 requests 也提供了相應(yīng)的方法去操縱它們。

requests中的session對象能夠讓我們跨http請求保持某些參數(shù),即讓同一個session對象發(fā)送的請求頭攜帶某個指定的參數(shù)。當然,最常見的應(yīng)用是它可以讓cookie保持在后續(xù)的一串請求中。

下面,通過官方文檔中的示例來了解如何使用它。

import requests
s = requests.session()
# 第一步:發(fā)送一個請求,用于設(shè)置請求中的cookies
r1 = s.get('http://httpbin.org/cookies/set/sessioncookie/123456789')
print(r1.text)
# 第二步:再發(fā)送一個請求,用于查看當前請求中的cookies
r2 = s.get("http://httpbin.org/cookies")
print(r2.text)

運行結(jié)果

{
  "cookies": {
    "sessioncookie": "123456789"
  }
}

{
  "cookies": {
    "sessioncookie": "123456789"
  }
}

從結(jié)果中我們可以看出,第二次請求已經(jīng)攜帶上了第一次請求所設(shè)置的cookie,即通過session達到了保持cookie的目的。示例中創(chuàng)建了一個requests.Session()對象,通過該對象來進行http請求操作,該操作基本類似于requests.request()

由于session讓請求之間具有了連貫性,那么,就有了跨請求參數(shù)和非跨請求參數(shù)的區(qū)別。即有時我想讓所有請求均帶有某個參數(shù),而有時我只是想讓單獨的一條請求帶上臨時的參數(shù)。通過下面的例子來了解如何使用。

import requests
s = requests.Session()
s.headers.update({'x-test': 'true'})
# both 'x-test' and 'x-test2' are sent
r1 = s.get('http://httpbin.org/headers', headers={'x-test2': 'true'})
print(r1.text)
# 'x-test' is sent
r2 = s.get('http://httpbin.org/headers')
print(r2.text)

運行結(jié)果

# r1.text
{
 "headers": {
  "Accept": "*/*", 
  "Accept-Encoding": "gzip, deflate", 
  "Host": "httpbin.org", 
  "User-Agent": "python-requests/2.22.0", 
  "X-Amzn-Trace-Id": "Root=1-5e91656f-b99f14a4d6f47f9e55a90bb4", 
  "X-Test": "true", 
  "X-Test2": "true"
 }
}
# r2.text
{
 "headers": {
  "Accept": "*/*", 
  "Accept-Encoding": "gzip, deflate", 
  "Host": "httpbin.org", 
  "User-Agent": "python-requests/2.22.0", 
  "X-Amzn-Trace-Id": "Root=1-5e91656f-e9741db4c2ca2fd6e0628396", 
  "X-Test": "true"
 }
}

從結(jié)果中我們可以得出兩條結(jié)論:

session可以為請求方法提供缺省數(shù)據(jù),比如第一次請求中的{‘x-test’: ‘true’}就是缺省數(shù)據(jù),此時的缺省數(shù)據(jù)就是跨請求參數(shù)。
方法級別的參數(shù)不會被跨請求保持,比如第二次請求時,沒有攜帶headers={‘x-test2’: ‘true’},返回的結(jié)果中也沒有{‘x-test2’: ‘true’},說明該參數(shù)沒有在第一次請求后被保持住。

另外說一點單獨處理cookie字段,處理為字典格式

# 處理cookie內(nèi)容為字典
cookie = "SINAGLOBAL=821034395211.0111.1522571861723; wb_cmtLike_1850586643=1; un=tyz950829@sina.com; wb_timefeed_1850586643=1; UOR=,,login.sina.com.cn; wvr=6; SUBP=0033WrSXqPxfM725Ws9jqgMF55529P9D9WWsNeq71O_sXkkXNnXFHgOW5JpX5KMhUgL.Fo2RSK5f1hqcShe2dJLoI0qLxK-L12qLB-zLxKqL1hnL1K2LxK-LBo5L12qLxKqL1hML1KzLxKnL1K.LB-zLxK-L1K-LBKqt; YF-V5-G0=c99031715427fe982b79bf287ae448f6; ALF=1556795806; SSOLoginState=1525259808; SCF=AqTMLFzIuDI5ZEtJyAEXb31pv1hhUdGUCp2GoKYvOW0LQTInAItM-ENbxHRAnnRUIq_MR9afV8hMc7c-yVn2jI0.; SUB=_2A2537e5wDeRhGedG7lIU-CjKzz-IHXVUm1i4rDV8PUNbmtBeLVrskW9NUT1fPIUQGDKLrepaNzTEZxZHOstjoLOu; SUHB=0IIUWsCH8go6vb; _s_tentry=-; Apache=921830614666.5322.1525261512883; ULV=1525261512916:139:10:27:921830614666.5322.1525261512883:1525239937212; YF-Page-G0=b5853766541bcc934acef7f6116c26d1"
cookie_dict = {i.split("=")[0]: i.split("=")[1] for i in cookie.split("; ")}

參考文獻

https://cloud.tencent.com/developer/article/1739949

https://blog.csdn.net/weixin_42575020/article/details/95179840

到此這篇關(guān)于Python中requests.session()的用法小結(jié)的文章就介紹到這了,更多相關(guān)python requests.session內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Pytorch中torch.utils.checkpoint()及用法詳解

    Pytorch中torch.utils.checkpoint()及用法詳解

    在PyTorch中,torch.utils.checkpoint?模塊提供了實現(xiàn)梯度檢查點(也稱為checkpointing)的功能,這篇文章給大家介紹了Pytorch中torch.utils.checkpoint()的相關(guān)知識,感興趣的朋友一起看看吧
    2024-03-03
  • django的模型類管理器——數(shù)據(jù)庫操作的封裝詳解

    django的模型類管理器——數(shù)據(jù)庫操作的封裝詳解

    這篇文章主要介紹了django的模型類管理器——數(shù)據(jù)庫操作的封裝詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • django中的數(shù)據(jù)庫遷移的實現(xiàn)

    django中的數(shù)據(jù)庫遷移的實現(xiàn)

    這篇文章主要介紹了django中的數(shù)據(jù)庫遷移的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • Python實現(xiàn)簡單查找最長子串功能示例

    Python實現(xiàn)簡單查找最長子串功能示例

    這篇文章主要介紹了Python實現(xiàn)簡單查找最長子串功能,涉及字符串遍歷、統(tǒng)計等相關(guān)操作技巧,需要的朋友可以參考下
    2019-02-02
  • 使用python3調(diào)用wxpy模塊監(jiān)控linux日志并定時發(fā)送消息給群組或好友

    使用python3調(diào)用wxpy模塊監(jiān)控linux日志并定時發(fā)送消息給群組或好友

    這篇文章主要介紹了使用python3調(diào)用wxpy模塊,監(jiān)控linux日志并定時發(fā)送消息給群組或好友,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-06-06
  • python文檔字符串(函數(shù)使用說明)使用詳解

    python文檔字符串(函數(shù)使用說明)使用詳解

    這篇文章主要介紹了python文檔字符串(函數(shù)使用說明)使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07
  • Python GUI自動化實現(xiàn)繞過驗證碼登錄

    Python GUI自動化實現(xiàn)繞過驗證碼登錄

    這篇文章主要介紹了python GUI自動化實現(xiàn)繞過驗證碼登錄,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-01-01
  • python通過自定義isnumber函數(shù)判斷字符串是否為數(shù)字的方法

    python通過自定義isnumber函數(shù)判斷字符串是否為數(shù)字的方法

    這篇文章主要介紹了python通過自定義isnumber函數(shù)判斷字符串是否為數(shù)字的方法,涉及Python操作字符串判斷的相關(guān)技巧,需要的朋友可以參考下
    2015-04-04
  • Python成功解決讀文件出現(xiàn):IOError:?[Errno?0]?Error的錯誤

    Python成功解決讀文件出現(xiàn):IOError:?[Errno?0]?Error的錯誤

    在Python編程中,處理文件是常見的任務(wù)之一,但偶爾也會遇到各種錯誤,包括IOError,盡管Python?3.x中IOError已被OSError和FileNotFoundError等更具體的異常所取代,由于[Errno?0]不直接指向具體的錯誤類型,我們將討論一系列可能導(dǎo)致IOError的常見情況,需要的朋友可以參考下
    2024-07-07
  • pytorch GPU和CPU模型相互加載方式

    pytorch GPU和CPU模型相互加載方式

    在PyTorch中,保存和加載模型有兩種主要方式:直接保存整個模型結(jié)構(gòu)加權(quán)重,或者只保存模型的參數(shù),直接保存整個模型的方法簡單,但不夠靈活,且可能存在模型結(jié)構(gòu)不一致的風(fēng)險,推薦的做法是只保存模型參數(shù),這種方法需要在加載前定義與原模型結(jié)構(gòu)相同的模型
    2024-09-09

最新評論