web-dev-qa-db-ja.com

Pythonを使用してWebページにログインし、後で使用するためにCookieを取得する方法は?

Pythonを使用してWebページをダウンロードして解析したいのですが、それにアクセスするにはいくつかのCookieが必要です。したがって、最初にWebページにhttpsでログインする必要があります。ログインの瞬間には、2つのPOSTパラメーター(ユーザー名、パスワード)を/login.phpに送信します。ログインリクエスト中に、レスポンスヘッダーからCookieを取得して保存し、リクエストでそれらを使用してWebページ/data.phpをダウンロードできるようにします。

python(できれば2.6)でこれを行うにはどうすればよいですか?可能であれば、組み込みモジュールのみを使用します。

142
mandom
import urllib, urllib2, cookielib

username = 'myuser'
password = 'mypassword'

cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
login_data = urllib.urlencode({'username' : username, 'j_password' : password})
opener.open('http://www.example.com/login.php', login_data)
resp = opener.open('http://www.example.com/hiddenpage.php')
print resp.read()

resp.read()は、開きたいページのHTMLです。openerを使用して、セッションCookieを使用して任意のページを表示できます。

146
Harley Holcombe

優れた requests ライブラリを使用したバージョンは次のとおりです。

from requests import session

payload = {
    'action': 'login',
    'username': USERNAME,
    'password': PASSWORD
}

with session() as c:
    c.post('http://example.com/login.php', data=payload)
    response = c.get('http://example.com/protected_page.php')
    print(response.headers)
    print(response.text)
156
Boden Garman