如何在 robobrowser-python 中发出 POST 请求

Posted

技术标签:

【中文标题】如何在 robobrowser-python 中发出 POST 请求【英文标题】:How to make POST request in robobrowser-python 【发布时间】: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 【参考方案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)

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

Related resolved issue on github.

【讨论】:

以上是关于如何在 robobrowser-python 中发出 POST 请求的主要内容,如果未能解决你的问题,请参考以下文章

如何在Splunk中发出警报?

如何在 VC++ 中发送电子邮件?

如何在 Android 中发送电子邮件? [复制]

如何在 Android 应用中发送电子邮件? [复制]

如何找出在 Android 中发送到 SQLite 的查询?

如何在功能性 Vuejs 组件中发出事件