在上一篇requests使用cookie模拟登陆豆瓣中,虽然使用cookie
成功登录了,却存在一个问题,那就是会话不能保持,每个请求都得加上cookie
进行身份验证,为了解决这一问题,需要使用另一种会话技术——session
。
session: 服务端会话技术,客户的验证信息存放在服务端,能在每个请求中自动携带所有cookie,从而保持会话持续。
- 模拟登陆
仍旧以登陆豆瓣为例(cookie信息的手动获取看上一篇
),实例如下:
import requests
cookie_info = 'your cookiedata'
cookie_list = [info.strip().split('=') for info in cookie_info.split(';')]
cookies = {data[0]:data[1].replace('"','') for data in cookie_list}
url = 'https://www.douban.com/'
headers = {
'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.9 Safari/536.5',
}
session = requests.session() #创建session对象
requests.utils.add_dict_to_cookiejar(session.cookies,cookies) #将cookie信息存入cookiejar对象中
res = session.get(url,headers=headers).content.decode() #进行请求
print(res)
结果:
如果,登陆成功。
- 验证会话是否保持
方法: 在上面的基础上,访问网站内需要登陆权限的页面,如:我的订单
order_url = 'https://accounts.douban.com/passport/setting'
order = session.get(order_url,headers=headers)
print(order.text)
结果:
会话保持成功
博主其他文章推荐:
[1] 【python实用特性】-切片