如何在使用 Python 脚本登录时维护登录会话
Posted
技术标签:
【中文标题】如何在使用 Python 脚本登录时维护登录会话【英文标题】:How to maintain login session while logging in using Python Script 【发布时间】:2014-10-13 03:34:28 【问题描述】:我想使用 python 脚本登录 Ideone.com,然后使用 python 脚本使用后续请求从我自己的帐户中提取内容。 这是我用来登录网站的:
import requests
import urllib
from bs4 import BeautifulSoup
url='http://ideone.com/account/login/'
body = 'username':'USERNAME', 'password':'PASSWORD'
s = requests.Session()
loginPage = s.get(url)
soup = BeautifulSoup(loginPage.text)
r = s.post(soup.form['action'], data = body)
print r
此代码成功让我登录到我的 ideone 帐户。 但是,如果我随后调用(使用 BeautifulSoup)访问我的帐户详细信息,它会再次向我发送登录页面的 html。
如何保存特定脚本的会话以便它接受后续调用? 提前致谢,如果之前有人问过这个问题,我们深表歉意。
【问题讨论】:
你需要支持cookies - 检查docs.python.org/2.6/library/cookielib.html的底部(然后是其余部分) 嗨 Leon,非常感谢您的评论。现在,我可以在一次性身份验证后通过 HTTP 调用访问其他页面。虽然使用模块requests
【参考方案1】:
我们可以这样做:
from requests import session
from bs4 import BeautifulSoup
payload =
'action' : 'login',
'username' : 'USERNAME',
'password' : 'PASSWORD'
login_url='http://ideone.com/account/login/'
with session() as c:
c.post(login_url, data = payload)
request = c.get('http://ideone.com/myrecent')
print request.headers
print request.text
【讨论】:
以上是关于如何在使用 Python 脚本登录时维护登录会话的主要内容,如果未能解决你的问题,请参考以下文章