python - 如何在请求 session 期间注销网站

标签 python python-requests

我正在尝试从需要登录的网站上抓取一些数据。让事情变得复杂的是,我正在从三个不同的帐户中抓取数据。换句话说,我需要登录该网站,抓取数据,然后注销,三次。

注销按钮后面的 html 如下所示: html

我尝试过的(非常简化的)代码如下:

import requests

for account in [account1,account2,account3]:

    with requests.session() as session:

        [[login code here]]

        [[scraping code here]]

        session.get(url + "/logout")

使用第一个帐户进行抓取工作正常,但之后就不行了。我假设这是因为我没有正确注销。我可以做什么来解决这个问题?

最佳答案

很简单:

您应该伪造正确的登录请求。

要执行此操作,请转到登录页面:

  1. 打开“检查”工具的“网络”选项卡。检查“保留日志”选项也非常有用。
  2. 登录网站,您将看到“网络”选项卡中出现登录请求(通常是 POST 请求)。
  3. 右键单击请求,选择复制 -> 复制为 Curl,然后只需使用 this brilliant tool
  4. 通常,您可以修剪该工具生成的代码的 header 和 Cookie(但要小心修剪 Content-Type header ,它可能会破坏您的代码)。
  5. requests.[get|post](...) 替换为 session.[get|post](...)
  6. 利润。通过执行上面的代码,您将登录 session 。注销和任何形式的填充都以几乎相同的方式进行。

关于python - 如何在请求 session 期间注销网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49432371/

相关文章:

python - 在 Excel 中使用 Python 和 DataNitro 转换时间

python - 将网球结果表(包括比赛)刮到每一行

python requests.get etree 返回空

python字典键错误无法解决

python - DataFrame 一维错误上的 Pandas 交叉表

Python将文件从远程机器移动到本地

python - 散点图的轴限制不在 matplotlib 中

python - Python 中使用 mpmath.findroot 实现高精度多维牛顿法

python - 在 Reddit API 中访问列表结果的下一页

python - 尝试发送 PUT 请求时出现 ConnectionResetError