【问题标题】:How to make POST request in robobrowser-python如何在 robobrowser-python 中发出 POST 请求
【发布时间】:2014-07-07 09:52:55
【问题描述】:

http://robobrowser.readthedocs.org/en/latest/api.html

我正在尝试使用 browser.open(myurl) 访问 API,并寻找类似于 requests.post(url,data=data) 的 RB 方法。

因为robobrowser是建立在requests和beautifulsoup之上的所以我觉得肯定有办法做到的。

【问题讨论】:

  • 您通常会使用表单功能发帖;为什么你需要发帖?
  • 您的意思是页面使用来自 JavaScript 的 AJAX 请求?在这种情况下使用response.session

标签: python python-2.7 python-requests robobrowser


【解决方案1】:

您可以重复使用 RoboBrowser 对象的 requests.Session() 对象来使用相同的 cookie 执行您自己的 POSTs:

response = browser.session.post(...)

RoboBrowser 状态不会更新;您必须将 response 对象传递给 RoboBrowser._update_state() 方法。

browser._update_state(response)

但是,对于 AJAX 请求,您不需要这样做。

考虑到该库的未来版本可能会改变其工作方式;这不是记录在案的方法。

但是,通常您会发布到网站,因为您正在处理表单提交;将其留给提供的库功能(RoboBrowser.get_form(),然后是RoboBrowser.submit_form())。

【讨论】:

  • 是的,你必须这样做是的。有那么大的问题吗?如果您要使用 just requests,您也必须这样做。
【解决方案2】:

从 0.5.3 版开始,您可以像这样发送 POST 请求:

browser.open(url, method='post', data=data)

粗略浏览器的状态和会话将自动更新。

【讨论】:

    猜你喜欢
    • 2015-02-25
    • 2015-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-25
    • 1970-01-01
    • 2017-11-28
    • 2017-11-17
    相关资源
    最近更新 更多