Python + requests the session to keep the session

session () method

       Session object allows you to cross the request to keep certain parameters. It will be the same across all requests sent to keep a Session instance cookie, if you send multiple requests to the same host, TCP underlying connection will be reused, leading to significant performance improvements


Add session cookie () in

        Add (), there are two cases in the session cookie, parameter passing as a first cookie dictionary format, is required by requests.cookies.RequestsCookieJar () method is set to convert it into a packet format and then update the Jar session (object), The second parameter passing directly cookie Jar package format. This update will be directly updated to the session cookies () object

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中

 Cross request to keep the session instance:

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"}}'

  NOTE: Any method you pass to the request dictionary are provided with the session layer data is combined. The method of the cover layer parameters parameters of the session.

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": {}}

  NOTE: use a session-level parameters of the method will not be maintained across requests, as in the following examples only and a Cookie request, rather than the second.

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 Adding header information () in

  Relatively speaking, add header information () on the session straightforward and more

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)

Remove a value from the session parameters in the dictionary

        Some parameters like the session key dictionary layer can be omitted. To do this, you simply set the value of the bonds in the layer parameters for the method  None , the key will be automatically omitted

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)

 

Published 59 original articles · won praise 19 · views 10000 +

Guess you like

Origin blog.csdn.net/weixin_43507959/article/details/95923496