たぶんcookielib.CookieJarを使用すると役立つでしょう。たとえば、フォームを含むページに投稿する場合:
import urllib2
import urllib
from cookielib import CookieJar
cj = CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
formdata = { "username" : username, "password": password, "form-id" : "1234" }
data_encoded = urllib.urlencode(formdata)
response = opener.open("https://page.com/login.php", data_encoded)
content = response.read()
編集:
Piotrのコメントの後、少し詳しく説明します。ドキュメントから:
CookieJarクラスはHTTPCookieを保存します。HTTPリクエストからCookieを抽出し、HTTPレスポンスで返します。CookieJarインスタンスは、必要に応じて、含まれているCookieを自動的に期限切れにします。サブクラスは、ファイルまたはデータベースからのCookieの保存と取得も担当します。
したがって、CookieJar
インスタンスでどのようなリクエストを行っても、すべてのCookieは自動的に処理されます。あなたのブラウザのようにちょっと:)
私は自分の経験からしか話すことができず、Cookieの99%のユースケースは、Cookieを受信し、そのセッションの後続のすべての要求とともに送信する必要があることです。上記のコードはまさにそれを処理し、透過的に処理します。
cookievals
、を使用しますopener.addheaders.append(('Cookie', "; ".join('%s=%s' % (k,v) for k,v in cookievals.items())))
。