148

我想使用 python 下载和解析网页,但要访问它,我需要设置几个 cookie。因此,我需要先通过 https 登录网页。登录时刻包括向 /login.php 发送两个 POST 参数(用户名、密码)。在登录请求期间,我想从响应标头中检索 cookie 并存储它们,以便我可以在请求中使用它们来下载网页 /data.php。

我将如何在 python 中执行此操作(最好是 2.6)?如果可能的话,我只想使用内置模块。

4

2 回答 2

158

这是使用优秀请求库的版本:

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)
于 2012-08-24T06:07:36.350 回答
147
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 来查看任何页面。

于 2008-10-09T23:24:39.690 回答