如何使用 Python 登入网页并检索 Cookie 以备日后使用?

我想下载和解析网页使用 python,但访问它,我需要一对夫妇的 Cookie 集。因此,我需要先透过 https 登入网页。登录时刻包括向/login.php 发送两个 POST 参数(用户名、密码)。在登录请求期间,我想从响应头中检索 cookie 并存储它们,这样我就可以在请求中使用它们来下载网页/data.php。

如何在 python 中实现这一点(最好是2.6) ? 如果可能的话,我只想使用内置模块。

177661 次浏览
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 的页面。

下面是一个使用优秀 请求库的版本:

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)