【问题标题】:Get cookie from CookieJar by name按名称从 CookieJar 中获取 cookie
【发布时间】:2011-11-17 23:37:38
【问题描述】:

我知道我可以遍历 cookiejar 中的 cookie,这将允许我找到具有特定名称的 cookie - 但是 CookieJar 对象本身是否有任何我可以调用的方法来按名称获取某个 cookie?

它只是让我不必编写一个已经存在的辅助方法。

【问题讨论】:

  • 我看不到,没有。您可以创建一个函数或子类化 CookieJar 对象,但我不确定为什么不存在任何方法。

标签: python cookies cookiejar cookielib


【解决方案1】:

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

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

cookie 不仅仅是一个名称和值对。在其长长的属性列表 (17) 中,有 domainpath。例如,.ibm.com 的域值将适用于网站mail.ibm.comibm.com 的域值和/abc 的路径值将不适用于网页ibm.com/index.htm。因此,仅提供名称不足以在 CookieJar 中找到适用 cookie 的值。

虽然__iter__ 方法很容易返回cookie 对象的列表,例如list(cj),但CookieJar 的内部结构并不是一个简单的列表。 CookieJar 类的内部信息是 here

【讨论】:

    【解决方案2】:

    您还可以使用dict_from_cookiejar,它从 CookieJar 中返回一个键/值字典。比如:

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

    然后按键访问您的 cookie 值。

    【讨论】:

      【解决方案3】:

      这是未记录的内部结构,但您可以像这样直接访问 cookie:cookiejar._cookies[domain][path][name]

      【讨论】:

        【解决方案4】:

        cookielib.CookieJar?

        您可以将 jar 转换为列表并进行处理,例如{i.name: i for i in list(j)}

        顺便说一句,j._cookies 实际上已经是一个 dict-dict,尽管没有完全被简单地索引。

        cookie jar 文件?

        我以为那些是纯文本文件...

        【讨论】:

          猜你喜欢
          • 2012-05-30
          • 1970-01-01
          • 2016-01-12
          • 1970-01-01
          • 2011-05-17
          • 2016-04-24
          • 1970-01-01
          • 2011-12-13
          相关资源
          最近更新 更多