requests.Session()从CookieJar加载cookie

时间:2015-03-22 22:01:27

标签: python httprequest python-requests cookiejar

如何将CookieJar加载到新的requests.Session对象?

cj = cookielib.MozillaCookieJar("mycookies.txt")
s = requests.Session()

这是我创建的,现在会话将存储cookie,但我希望它从文件中获取我的cookie(会话应该加载cookieJar)。 如何实现这一目标?
我搜索了文档,但我只能找到代码示例,他们永远不会加载cookieJar,只是在一个会话期间保存cookie。

3 个答案:

答案 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.getrequest.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