通过名称从CookieJar获取cookie
我知道我可以通过一个叫做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个),其中包括 domain
和 path
。比如,domain
的值是 .ibm.com
,那么这个 cookie 就适用于网站 mail.ibm.com
。但是,如果 domain
的值是 ibm.com
,而 path
的值是 /abc
,那么这个 cookie 就不适用于网页 ibm.com/index.htm
。所以,仅仅提供名字是无法找到适用的 cookie 值的。
虽然 __iter__
方法可以很方便地返回一个 cookie
对象的列表,比如用 list(cj)
,但 CookieJar
的内部结构并不是一个简单的列表。关于 CookieJar
类的内部信息可以在 这里 找到。