【问题标题】:Requests - GET depends on POST请求 - GET 取决于 POST
【发布时间】:2016-03-02 11:48:38
【问题描述】:

我正在尝试从一个网页中获取一些数据。此网页使用.Net。根据萤火虫,当我点击一个按钮时,它会发送两个请求。

POST请求中有信息。然后有一个GET 请求获取我想要获取的信息。

我正在使用requests 模块。我不知道如何使这两个请求一起工作。

我试过了:

r = requests.post("https://example.com/vyber.aspx",data=_params) # _params is a dictionary obtained from Firebug
r = requests.get("https://example.com/vyber.aspx")
print r.content

但它不起作用(它返回不正确的HTML),因为这两个请求是独立的。我想我必须存储某种数据(可能是 cookie 或其他)来执行GET 请求。但我不知道怎么做。

我该怎么做?

【问题讨论】:

    标签: python post cookies get python-requests


    【解决方案1】:

    如果我知道你需要使用session。 正如文档所说-

    Session 对象允许你在 要求。它还在从 会话实例,并将使用 urllib3 的连接池。因此,如果 您正在向同一主机(底层 TCP)发出多个请求 连接将被重用,这可能会导致显着 性能提升(请参阅 HTTP 持久连接)。

    s = requests.Session()
    r = s.get('http://httpbin.org/cookies', cookies={'from-my': 'browser'})
    

    【讨论】:

      【解决方案2】:

      您还可以添加发送标头以使其真实

      ses = requests.session()
      headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36',
      }
      r = ses.post("https://example.com/vyber.aspx",data=_params, headers=headers)
      r = ses.get("https://example.com/vyber.aspx", headers=headers)
      print r
      

      你必须检查你的参数是这样的 {"name_in_html" : "value_you_want'} 有时网站也会等待接收另一个参数,该参数已经具有类似

      的值
      <input type="TYPE" id="ID" name="NAME" value="SOMEVAL">
      

      所以您必须将 {'NAME' : 'SOMEVAL'} 添加到您的数据中

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-07-24
        • 2020-04-01
        • 2018-04-22
        • 1970-01-01
        • 2014-05-12
        • 2017-05-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多