如何将CookieJar加载到新的requests.Session对象?
cj = cookielib.MozillaCookieJar("mycookies.txt")
s = requests.Session()
这是我创建的,现在会话将存储cookie,但我希望它从文件中获取我的cookie(会话应该加载cookieJar)。
如何实现这一目标?
我搜索了文档,但我只能找到代码示例,他们永远不会加载cookieJar,只是在一个会话期间保存cookie。
答案 0 :(得分:3)
可以为cookies=
(以及请求)对象提供可选的requests.Session
:
cookies =无
包含所有当前未完成的Cookie的CookieJar 会话。默认情况下,它是RequestsCookieJar,但可以是任何其他cookielib.CookieJar兼容对象。
请参阅:http://docs.python-requests.org/en/latest/api/#requests.Session.cookies
所以它变成了:
s = requests.Session(cookies=cj)
更新:我感到困惑的是requests.get
,request.post
等...,正如评论中mata正确指出的那样 - cookies是会话对象的属性,而不是init参数,所以这不会起作用。构建会话后的s.cookies = cj将:
因此,请使用:
s = requests.Session()
s.cookies = cj
答案 1 :(得分:2)
在Python 3.x中
import requests
import http.cookiejar
s = requests.Session()
s.cookies = http.cookiejar.MozillaCookieJar("anything.txt")
例如,我将访问google网站并将cookiejar保存到文件“ anything.txt”
s.get("https://google.com")
s.cookies.save()
将来,我将使用cookiejar再次访问google。
s.cookies.load()
s.get("https://google.com")
答案 2 :(得分:2)
Python 3.x代码,可以正常工作且实现良好的示例。该代码是不言自明的。
此代码正确处理“会话cookie”,并在两次运行之间保留它们。默认情况下,这些文件不会保存到磁盘,这意味着大多数网站将要求您在两次运行之间不断登录。但是使用以下技术,所有会话cookie也会保留!
这是您要查找的代码。
cmpps/pd