如何在 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 执行您自己的 POST
s:
response = browser.session.post(...)
RoboBrowser
状态不会更新;您必须将 response
对象传递给 RoboBrowser._update_state()
方法。
browser._update_state(response)
但是,对于 AJAX 请求,您不需要这样做。
考虑到该库的未来版本可能会改变其工作方式;这不是记录在案的方法。
但是,通常您会发布到网站,因为您正在处理表单提交;将其留给提供的库功能(RoboBrowser.get_form()
,然后是RoboBrowser.submit_form()
)。
【讨论】:
是的,你必须这样做是的。有那么大的问题吗?如果您要使用 justrequests
,您也必须这样做。【参考方案2】:
从 0.5.3 版开始,您可以像这样发送 POST 请求:
browser.open(url, method='post', data=data)
粗略浏览器的状态和会话将自动更新。
Related resolved issue on github.【讨论】:
以上是关于如何在 robobrowser-python 中发出 POST 请求的主要内容,如果未能解决你的问题,请参考以下文章