如何在robobrowser-python中发送POST请求
我正在尝试使用 browser.open(myurl)
来访问一个API,并且想找一个类似于 requests.post(url,data=data)
的方法。
因为 robobrowser 是建立在 requests 和 beautifulsoup 之上的,所以我觉得一定有办法做到这一点。
2 个回答
3
从版本0.5.3开始,你可以这样发送POST请求:
browser.open(url, method='post', data=data)
当然,浏览器的状态和会话会自动更新。
4
你可以重复使用一个 RoboBrowser
对象里的 requests.Session()
,这样就能用相同的 cookies 自己发送 POST
请求:
response = browser.session.post(...)
不过,RoboBrowser
的状态不会自动更新;你需要把 response
对象传给 RoboBrowser._update_state()
方法来更新状态。
browser._update_state(response)
不过,对于 AJAX 请求,你就不需要这样做了。
要注意的是,未来的库版本可能会改变这个功能的使用方式;这个方法并没有详细的文档说明。
不过,通常来说,你发送 POST
请求是因为你在处理一个表单提交;这部分可以交给库自带的功能来处理(先用 RoboBrowser.get_form()
获取表单,然后用 RoboBrowser.submit_form()
提交表单)。