python的requests.session()_Python+requests之session保持会话
session()方法
會話對象讓你能夠跨請求保持某些參數。它也會在同一個 Session 實例發出的所有請求之間保持 cookie,如果你向同一主機發送
多個求,底層的 TCP 連接將會被重用,從而帶來顯著的性能提升
session()中添加cookie
import requests
# 字典格式cookie添加方法
r = requests.session()
cookie = {"cookie1": "value_1", "cookie2": "value2"}
c = requests.cookies.RequestsCookieJar()
for key, value in cookie.items():
c.set(key, value) ? ? ? ? ? ? ? ? ? ? ? # 添加cookie到RequestsCookieJar中
r.cookies.update(c) ? ? ? ? ? ? ? ? ? ? ? ? # 將RequestsCookieJar中的cookie更新到session()中
print(r.cookies)
# jar包格式cookie添加方法
s = requests.session()
print(s.cookies) ? ? ? ? ? ? ? ? ? ? ? ? ? ?# 打印session會話中cookies為空
s.cookies.update(r.cookies) ? ? ? ? ? ? ? ? # 將變量r中的jar包格式cookie直接更新到賦值session對象的變量s中
print(s.cookies) ? ? ? ? ? ? ? ? ? ? ? ? ? ?# 打印發現變量r中的jar包格式cookie直接更新到會話對象s中
session()中添加cookie有兩種情況,第一種cookie傳參為字典格式,則需要通過requests.cookies.RequestsCookieJar()的set
方法將轉換成Jar包格式然后update到session()對象中,第二種cookie直接傳參Jar包格式。這種直接update將cookies更新到session()
對象中
跨請求保持會話實例:
import requests
s = requests.Session()
r1 = s.get('http://httpbin.org/cookies/set/sessioncookie/123456789')
print(r1.text)
# '{"cookies": {"sessioncookie": "123456789"}}'
r2 = s.get("http://httpbin.org/cookies")
print(r2.text)
# '{"cookies": {"sessioncookie": "123456789"}}'
注:任何你傳遞給請求方法的字典都會與已設置會話層數據合并。方法層的參數覆蓋會話的參數。
import requests
s = requests.Session()
r = s.get('http://httpbin.org/cookies', cookies={'from-my': 'browser'})
print(r.text)
# '{"cookies": {"from-my": "browser"}}'
r = s.get('http://httpbin.org/cookies')
print(r.text)
# '{"cookies": {}}
注:使用了會話, 方法級別的參數也不會被跨請求保持,如下面的例子只會和第一個請求發送 cookie ,而非第二個。
import requests
s = requests.Session()
c = requests.cookies.RequestsCookieJar()
c.set('from-my', 'Chrome')
s.cookies.update(c)
# session()添加key為'from-my'的cookie
r1 = s.get('http://httpbin.org/cookies')
print(r1.text)
# '{"cookies": {'from-my': 'Chrome'}}
# 方法層次覆蓋添加key為'from-my'但value為 browser的cookies
r2 = s.get('http://httpbin.org/cookies', cookies={'from-my': 'browser'})
print(r2.text)
# '{"cookies": {"from-my": "browser"}}'
# 跨請求后覆蓋的cookie復原
r3 = s.get('http://httpbin.org/cookies')
print(r3.text)
# '{"cookies": {'from-my': 'Chrome'}}
session()中添加頭部信息
相對來說session()中添加頭部信息就簡單直白多
import requests
s = requests.Session()
s.headers.update({'x-test': 'true'})
# both 'x-test' and 'x-test2' are sent
r = s.get('http://httpbin.org/headers', headers={'x-test2': 'true'})
print(r.text)
從會話字典參數中移除一個值
想省略字典參數中一些會話層的鍵。要做到這一點,你只需簡單地在方法層參數中將那個鍵的值設置為None,那個鍵就會被自動省略掉
import requests
s = requests.Session()
s.headers.update({'x-test': 'true'})
r = s.get('http://httpbin.org/headers', headers={'x-test2': 'true'})
print(r.text)
s.headers.update({'x-test': None})
r = s.get('http://httpbin.org/headers', headers={'x-test2': 'true'})
print(r.text)
總結
以上是生活随笔為你收集整理的python的requests.session()_Python+requests之session保持会话的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 解析烧录固件失败_化虚为实,示人本相!F
- 下一篇: python环境变量的配置 alias_
