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)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值