Python 如何在请求会话期间注销网站

Python 如何在请求会话期间注销网站,python,python-requests,Python,Python Requests,我试图从一个需要登录的网站上抓取一些数据。使事情复杂化的是,我正在从三个不同的帐户中提取数据。换句话说,我需要登录到这个站点,刮取数据,然后注销,三次 注销按钮后面的html如下所示: 我尝试过的(非常简化的)代码如下: import requests for account in [account1,account2,account3]: with requests.session() as session: [[login code here]]

我试图从一个需要登录的网站上抓取一些数据。使事情复杂化的是,我正在从三个不同的帐户中提取数据。换句话说,我需要登录到这个站点,刮取数据,然后注销,三次

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

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

import requests

for account in [account1,account2,account3]:

    with requests.session() as session:

        [[login code here]]

        [[scraping code here]]

        session.get(url + "/logout")
使用第一个帐户进行刮取可以正常工作,但之后就不行了。我想这是因为我没有正常注销。我能做些什么来解决这个问题?

很简单:

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

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

  • 打开“检查”工具、“网络”选项卡。选中“保留日志”选项也非常有用
  • 登录到该站点,您将在网络选项卡中看到登录请求(通常是POST请求)
  • 右键单击请求,选择复制->复制为卷曲,然后使用
  • 通常,您可以修剪工具生成的代码的标题和cookie(但要小心修剪
    内容类型
    标题,它可能会破坏您的代码)
  • 替换
    请求。[get | post](…)
    会话。[get | post](…)
  • 利润。您将通过执行上面的代码登录会话。注销和任何形式的人口是几乎相同的方式

  • 不知道这是否有效,但请尝试使用
    session.cookies.clear()
    清除会话cookies。另外,您确定问题是串行登录,而不是任何帐户?也许您已经尝试过这个方法,但如果没有,请尝试更改列表中帐户的顺序。它将帮助您调试。@KeyurPotdar在“session.get(url+”/logout”)”之后或代替“session.get(url+”/logout”)”?而不是注销。