结合 RoboBrowser 与 Requests-HTML

Combining RoboBrowser with Requests-HTML

我喜欢使用 RoboBrowser 轻松填写和提交在线表单,我想我知道如何访问 RoboBrowser 底层的 requests.Session() 实例(如果我需要使用它的话)。

但我想使用 RoboBrowser 提交表单,然后将会话传递给 requests_html.Session(),这样我就可以使用 JavaScript 呈现 HTML。我怎么做?有没有办法将 Requests 会话转换为 Requests-HTML 会话?

我查看了 Requests、Requests-HTML 和 RoboBrowser 的文档,以及所有关于 Requests-HTML 的问题。我也用谷歌搜索了答案。 None 这些资源有帮助。

我知道为此目的使用 Selenium 可能更容易,但这是针对工作中的项目,我无法在其中安装 Selenium。我相信我关于如何将 Requests 会话转换或传递到 Requests-HTML 会话的更广泛的问题对 Python 社区很有用。

我在 Requests-HTML source code 中找到了答案。为此,有一个名为 HTMLResponse._from_response() 的特定 class 方法,它将响应作为第一个参数,将会话作为第二个参数。

假设我们有一个名为 browserrobobrowser.RoboBrowser() 对象。然后底层 requests.Response() 对象可以被 browser.response 访问。要将其传递给名为 sessionrequests_html.HTMLSession(),请执行以下操作:

import requests_html

html_response = requests_html.HTMLResponse._from_response(browser.response, session)

html_response.html.render()  # This now works