requests.session()会话保持

首先说一下,为什么要进行会话保持的操作?

requests库的session会话对象可以跨请求保持某些参数,说白了,就是比如你使用session成功的登录了某个网站,则在再次使用该session对象请求该网站的其他网页都会默认使用该session之前使用的cookie等参数。尤其是在保持登陆状态时运用的最多。在某些网站抓取,或者app抓取时,有的是强制性的需要登陆的,有的是不登陆返回的数据就是假的或者说是不完整的数据,那我们不可能去做到每一次请求都要去登陆一下怎么办,就需要用到保持会话的功能了,我们可以只登陆一次,然后保持这种状态去做其他的或者更多的请求。

其次,我们该如何使用会话保持?举一个事例来说明一下:

#requests.session():维持会话,可以让我们在跨请求时保存某些参数
 
 
import requests
 
#实例化session
session = requests.session()
 
#目标url
url = 'https://www.douban.com/accounts/login'
 
form_data = {
    'source': 'index_nav',
    'form_email': 'xxx',
    'form_password': 'xxx',
    'captcha-solution': 'stamp',
    'captcha-id': 'b3dssX515MsmNaklBX8uh5Ab:en'
}
 
#设置请求头
req_header = {
    'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36',
}
 
#使用session发起请求
response = session.post(url,headers=req_header,data=form_data)
 
if response.status_code == 200:
 
    #访问个人主页:
    url = 'https://www.douban.com/people/175417123/'
 
    response = session.get(url,headers = req_header)
 
    if response.status_code == 200:
 
        with open('douban3.html','w') as file:
 
            file.write(response.text)
原文地址:https://www.cnblogs.com/lpdeboke/p/12920152.html