我尝试了几个小时,但似乎没有任何工作。我正在尝试登录网页下载一些数据。每次登录都需要一个新的cookie(PHPSESSID),因为它在浏览连接结束时到期。我尝试了以下方法:
import requests
payload = {'user':'myusername', 'password':'mypassword'}
url = 'blahblah.blah'
with requests.Session() as s:
r = s.get(url)
cookie = {'PHPSESSID': r.cookies['PHPSESSID']}
r = s.post(url, data=payload, cookies=cookie)
然而,这会重定向到登录页面,我认为这意味着登录失败。然后,我尝试通过Chrome登录,并手动获取Cookie。当我这样做时,我可以使用该cookie来使用请求登录。
with requests.Session() as s:
cookie = {'PHPSESSID': 'some value obtained by logging in through Chrome and copying the cookie value'}
r = s.post(url, cookies=cookie, data=payload)
以上工作完美无缺。
我不确定我在原始代码中做错了什么。任何帮助表示赞赏!
答案 0 :(得分:1)
import requests
payload = {'user':'myusername', 'password':'mypassword'}
url = 'blahblah.blah'
with requests.Session() as s:
r = s.post(url, data=payload)
cookie = {'PHPSESSID': requests.utils.dict_from_cookiejar(s.cookies)['PHPSESSID']}
之后,您可以将cookie
用于后续请求
您正在登录,我认为这应该是您应该提出的post
请求。