曾经一直以为requests.Session()的cookies是dict类型的,因为一直没用过,所以也不甚了解,直到今天想要用python监控一下火车票才发现没我想的那么简单。
In [13]: s=requests.Session()
In [14]: s.cookies
Out[14]: <RequestsCookieJar[]>
#CookieJar转为字典
requests.utils.dict_from_cookiejar(r.cookies)
#字典转为CookieJar
requests.utils.cookiejar_from_dict(cookie_dict, cookiejar=None, overwrite=True)
也就是说,使用Session()跨请求保持http参数,cookies定义的时候应该这么写。
s = requests.Session()
cookie_dict = {
'JSESSIONID': 'A44BD7AC80CE7182CDA7880237AF93B8'
}
s.cookies = requests.utils.cookiejar_from_dict(cookie_dict, cookiejar=None, overwrite=True)
另外,用Session()向同一主机发出多个请求的时候,底层的tcp链接将会被重用,从而显著提升性能,所以做数据抓取或者监控的时候,一定要用Session()方法。
2 条评论
python不晓得能火多久
其实各有各的用处,谁也不能代替谁,有些公司就不用python换java了