5

この作品を使ったのは

cj = cookielib.LWPCookieJar()
cookie_support = urllib2.HTTPCookieProcessor(cj)
opener = urllib2.build_opener(cookie_support, urllib2.HTTPHandler)
urllib2.install_opener(opener)

// ..... log in with username and password. 
// urllib2.urlopen() to get the stuff I need. 

さて、どうすれば Cookie を保持し、有効期限を無期限に設定できるので、次回はユーザー名とパスワードで再度ログインする必要がなくなります。直接使用できますurllib2.urlopen()か?

「次回」とは、プログラムが終了した後、新しいプログラムを開始するときに、ディスクからクッキーをリロードして使用できることを意味します

どうもありがとう

4

1 に答える 1

7

Requests HTTP ライブラリを使用することを強くお勧めします。このすべてを処理します。

http://docs.python-requests.org/en/latest/

import requests
sess = requests.session()
sess.post("http://somesite.com/someform.php", data={"username": "me", "password": "pass"})
#Everything after that POST will retain the login session
print sess.get("http://somesite.com/otherpage.php").text

編集: セッションをディスクに保存するには、多くの方法があります。次のことができます。

from requests.utils import cookiejar_from_dict as jar
cookies = jar(sess.cookies)

次に、次のドキュメントをお読みください。これを FileCookieJar に変換し、Cookie をテキスト ファイルに保存してから、プログラムの開始時にそれらを読み込むことができます。

http://docs.python.org/2/library/cookielib.html#cookiejar-and-filecookiejar-objects

または、辞書をピクルしてそのデータをファイルに保存し、pickle.load(file).

http://docs.python.org/2/library/pickle.html

編集 2: 有効期限を処理するには、次のように CookieJar を反復処理できます。cj何らかの方法で取得された CookieJar であると想定されます。

for cookie in cj:
    if cookie.is_expired():
        #re-attain session

有効期限が切れている Cookie があるかどうかを確認するには、if any(c.is_expired() for c in cj).

于 2012-11-30T04:58:19.230 に答える