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

5 投票
2 回答
4077 浏览
提问于 2025-04-18 06:59

我正在尝试使用 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() 提交表单)。

撰写回答