【发布时间】:2019-09-27 16:49:31
【问题描述】:
我正在尝试抓取我拥有合法登录名的网站。当您尝试访问此站点时,您会被重定向到 Verify.aspx,直到您输入 access-code 的合法值。使用 Python 的 requests 库,我尝试了以下方法:
url1 = "<url>/Verify.aspx"
payload = {"access-code": "xxxxxxxx" }
ses = requests.Session()
r = requests.get(url1, data=payload)
当我查看值或r.cookies 时,我发现我抓到了一堆 cookie,存储在一个 cookie jar 中:
<RequestsCookieJar[Cookie(version=0, name='ASP.NET_SessionId', value='...)]>
此时,我想保留会话信息,并将其包含在未来的请求中。例如下面,我想浏览一个普通页面(即home),所以我尝试访问该页面,并尝试将cookies一起发送。
test = ses.post('<url>/home', cookies= r.cookies)
但是,在这个阶段,当我在 python 中查看test.text 时,我可以从代码中看到我刚刚被重定向回原来的Verify.aspx 页面。
我已经进行了大量的谷歌搜索,但没有成功。我对 Python 有一定的了解,但对抓取却一无所知。我实际上更喜欢 R 解决方案,因为我更喜欢它,但在我看来,Python 抓取库比 R 包更好。我不想使用 Selenium 之类的东西,除非它是通过 Python 或 R,因为我想在没有任何用户交互的情况下提取和处理数据。
我感觉卡住了 - 我知道我正在传递合法代码,并且由于我可以通过普通网页正常登录,因此我正在获取有效的会话 cookie。我只是不知道如何在随后的 URL 调用期间捕获、保存会话 cookie 信息并将其传递回页面。
我读过的所有内容都表明requests 库应该处理有关 cookie 的所有内容,但我认为我只是错误地传递了它。
有人可以建议我下一步可以尝试什么吗?
#
编辑
感谢您的关注,@Faboor。我认为我在一个更好的轨道上,因为我现在有一个不同的错误信息。现在,当我查看print(test.text) 的内容时,它显示“您的浏览器发送了此服务器无法理解的请求。”。我尝试访问的第二个 URL 不是离散页面(即它看起来像一个文件夹,而不是 index.html 之类的东西)可以吗?
【问题讨论】:
标签: python python-requests session-cookies