通过名称从CookieJar获取cookie

35 投票
4 回答
39068 浏览
提问于 2025-04-17 06:32

我知道我可以通过一个叫做cookiejar的东西来逐个查看里面的cookies,这样我就能找到一个特定名字的cookie。但是,CookieJar这个对象本身有没有什么方法可以直接通过名字来获取某个cookie呢?

这样的话,我就不用再写一个已经存在的辅助方法了。

4 个回答

8

这部分内容没有详细的说明,但你可以直接这样访问 cookies:cookiejar._cookies[domain][path][name]

32

你还可以使用 dict_from_cookiejar 这个工具,它可以从一个 CookieJar 中提取出键值对,返回一个字典。就像这样:

my_cookies = requests.utils.dict_from_cookiejar(s.cookies)

然后你就可以通过键来访问你的 cookie 值了。

36

是的,__iter__ 方法会遍历 CookieJar 中的每一个 cookie。

for cookie in cj:
   print cookie.name, cookie.value, cookie.domain #etc etc

cookie 不仅仅是一个名字和一个值的组合。它有很多属性(总共有17个),其中包括 domainpath。比如,domain 的值是 .ibm.com,那么这个 cookie 就适用于网站 mail.ibm.com。但是,如果 domain 的值是 ibm.com,而 path 的值是 /abc,那么这个 cookie 就不适用于网页 ibm.com/index.htm。所以,仅仅提供名字是无法找到适用的 cookie 值的。

虽然 __iter__ 方法可以很方便地返回一个 cookie 对象的列表,比如用 list(cj),但 CookieJar 的内部结构并不是一个简单的列表。关于 CookieJar 类的内部信息可以在 这里 找到。

撰写回答