从CookieJar获取Cookie的名称
问题描述:
我知道我可以遍历cookiejar中的cookie,这将允许我找到一个具有特定名称的cookie - 但CookieJar对象本身是否有我可以调用的任何方法来获取一个名字的cookie?从CookieJar获取Cookie的名称
它只是节省我不得不写一个已经存在的帮助方法。
答
是的,__iter__
方法将通过每个cookie中CookieJar
。
for cookie in cj:
print cookie.name, cookie.value, cookie.domain #etc etc
Cookie不仅仅是一个名称和值对。在其长列表(17)中,有domain
和path
。例如,域值.ibm.com
将适用于网站mail.ibm.com
。域值ibm.com
和路径值/abc
不适用于网页ibm.com/index.htm
。所以通过单独提供名称不足以在CookieJar
中找到适用的cookie的价值。
虽然__iter__
方法会很容易地返回cookie
对象的列表,例list(cj)
,的CookieJar
内部结构不是简单的列表。关于CookieJar
类的内部结构是here。
答
cookielib.CookieJar?
您可以将jar转换为列表并进行处理,例如{i.name: i for i in list(j)}
和顺便说一句,j._cookies实际上已经是一个字典,虽然不是完全微不足道的索引。
Cookie jar文件?
我以为那些都是纯文本文件......
答
您也可以使用dict_from_cookiejar,它从CookieJar返回一个键/值字典。例如:
my_cookies = requests.utils.dict_from_cookiejar(s.cookies)
然后按键访问您的cookie值。
答
这是无证的内部,但是您可以直接访问饼干这样的:cookiejar._cookies[domain][path][name]
不,我所看到的,没有。你可以做一个函数或子类的CookieJar对象,但我不知道为什么没有方法存在。 – Blender