MozillaCookieJar
FileCookieJar
コンストラクターに次の docstring がある 継承元:
Cookies are NOT loaded from the named file until either the .load() or
.revert() method is called.
.load()
次に、メソッドを呼び出す必要があります。
また、Jermaine Xu が指摘したように、ファイルの最初の行には# Netscape HTTP Cookie File
または# HTTP Cookie File
文字列を含める必要があります。使用するプラグインによって生成されたファイルにはそのような文字列が含まれていないため、自分で挿入する必要があります。http://code.google.com/p/cookie-txt-export/issues/detail?id=5で適切なバグを報告しました
編集
セッション Cookie は、5 列目に 0 で保存されます。ignore_expires=True
メソッドに渡さない場合load()
、ファイルからロードするときにそのような Cookie はすべて破棄されます。
ファイルsession_cookie.txt
:
# Netscape HTTP Cookie File
.domain.com TRUE / FALSE 0 name value
Python スクリプト:
import cookielib
cj = cookielib.MozillaCookieJar('session_cookie.txt')
cj.load()
print len(cj)
出力:
0
編集2
上記の jar に Cookie を取得することはできましたが、属性にまだ値があるため、後で破棄されます。これを防ぐには、次のように有効期限を将来の時間に設定する必要があります。cookielib
0
expires
for cookie in cj:
# set cookie expire date to 14 days from now
cookie.expires = time.time() + 14 * 24 * 3600
編集3
私は wget と curl の両方をチェックし、どちらも0
有効期限を使用してセッション Cookie を示します。これは事実上の標準であることを意味します。ただし、Python の実装では同じ目的で空の文字列を使用しているため、問題が発生しました。この点に関する Python の動作は、wget と curl が行うことと一致しているべきだと思います。そのため、http://bugs.python.org/issue17164でバグを報告しました。5列目の s を空の文字列に
置き換えることに注意してください。問題を解決する別の方法は0
、入力ファイルの有効期限を変更してに渡すignore_discard=True
ことload()
です (この場合、有効期限を変更する必要はありません)。