我想使用python下载和解析网页,但要访问它我需要设置几个cookie。因此,我需要首先通过https登录网页。登录时刻涉及向/login.php发送两个POST参数(用户名,密码)。在登录请求期间,我想从响应头中检索cookie并存储它们,以便我可以在请求中使用它们来下载网页/data.php。
我如何在python中执行此操作(最好是2.6)?如果可能的话我只想使用内置模块。
答案 0 :(得分:155)
以下是使用优秀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)
答案 1 :(得分:146)
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查看任何页面。