cookie的使用
在get中传递cookie,网络请求中会使用这个cookie,但是并不会将其存储变成 requests的cookie
import requests
import time
mycookie = dict(BDSID="zhadu")
req = requests.get("http://httpbin.org/cookies",cookies = mycookie)
time.sleep(3)
print(req.cookies)
print(req.text)
数据展示如下:
<RequestsCookieJar[]>
{
"cookies": {
"BDSID": "zhadu"
}
}
cookies设置
从网上粘贴下来的cookies然后进行设置,使用RequestsCookieJar对象
import requests
cookies = 'xxxxxxx'
jar = requests.cookies.RequestsCookieJar()
headers = {
'Host': 'www.xxxx.com',
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36'
}
for cookie in cookies.split(';'):
key, value = cookie.split('=', 1)
jar.set(key, value)
r = requests.get("http://www.xxxx.com", cookies=jar, headers=headers)
print(r.text)
session设置
这个部分requests 和 session有关 使用cookie模拟登录配合session的步骤: 首先使用session.post登陆一个要登录的网站,因为是会话,所以会获取cookies信息 在下一次的get请求的时候,直接携带cookies的信息
- 注意一下:session的请求(自动携带cookies)和request的请求(不会携带cookies信息)
import requests
session = requests.Session() # 会话
mysession1 = session.get("http://httpbin.org/cookies/set/number/123456789")
mysession1 = session.get("http://httpbin.org/cookies")
print(mysession1.text)
mysession2 = requests.get("http://httpbin.org/cookies/set/number/123456789")
mysession2 = requests.get("http://httpbin.org/cookies")
print(mysession2.text)
数据展示如下:
{
"cookies": {
"number": "123456789"
}
}
{
"cookies": {}
}