2011-11-17 9 views
13

クッキージャーでクッキーを繰り返し処理できることがわかっているので、特定の名前のクッキーを見つけることができますが、CookieJarオブジェクト自体には、名前による特定のクッキー?CookieJarから名前でクッキーを取得する

すでに存在するヘルパーメソッドを記述する必要がありません。

+0

ない私が見ることができること、ありません。クッキージャーオブジェクトをサブクラス化することもできますが、メソッドが存在しない理由はわかりません。 – Blender

答えて

14

はい、__iter__方法はCookieJarに各クッキーを通過します。

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

クッキーは単なる名前と値のペアではありません。プロパティの長いリスト(17)には、domainpathがあります。 .ibm.comのドメイン値は、例えばウェブサイトmail.ibm.comに適用可能である。 ibm.comのドメイン値と/abcのパス値は、Webページibm.com/index.htmには適用されません。したがって、名前だけを指定すると、該当するCookieの値をCookieJarに見つけることは不十分です。

__iter__方法は、簡単に例list(cj)cookieオブジェクトのリストを返しますが、CookieJarの内部構造が単純なリストではありません。 CookieJarクラスに関する内部はhereです。

1

cookielib.CookieJar?

jarをリストに変換して処理することができます。 {i.name: i for i in list(j)}

とbtw、j._cookiesは、実際にはdict-dictですが、まだ完全には索引付けされていません。

cookie jarファイル?私はそれらがプレーンテキストファイルだと思っていた

...

3

dict_from_cookiejarを使用して、CookieJarからキー/値の辞書を返すこともできます。次のようなもの:

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

次に、キーでCookieの値にアクセスします。

3

それは文書化されていない内部のですが、あなたは直接このようにクッキーにアクセスすることができます。cookiejar._cookies[domain][path][name]

関連する問題