我正在尝试从需要登录的网站上抓取一些数据。让事情变得复杂的是,我正在从三个不同的帐户中抓取数据。换句话说,我需要登录该网站,抓取数据,然后注销,三次。
我尝试过的(非常简化的)代码如下:
import requests
for account in [account1,account2,account3]:
with requests.session() as session:
[[login code here]]
[[scraping code here]]
session.get(url + "/logout")
使用第一个帐户进行抓取工作正常,但之后就不行了。我假设这是因为我没有正确注销。我可以做什么来解决这个问题?
最佳答案
很简单:
您应该伪造正确的登录请求。
要执行此操作,请转到登录页面:
- 打开“检查”工具的“网络”选项卡。检查“保留日志”选项也非常有用。
- 登录网站,您将看到“网络”选项卡中出现登录请求(通常是 POST 请求)。
- 右键单击请求,选择复制 -> 复制为 Curl,然后只需使用 this brilliant tool
- 通常,您可以修剪该工具生成的代码的 header 和 Cookie(但要小心修剪
Content-Type
header ,它可能会破坏您的代码)。 - 将
requests.[get|post](...)
替换为session.[get|post](...)
- 利润。通过执行上面的代码,您将登录 session 。注销和任何形式的填充都以几乎相同的方式进行。
关于python - 如何在请求 session 期间注销网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49432371/