首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RoboBrowser可以打开html字符串吗?

RoboBrowser可以打开html字符串吗?
EN

Stack Overflow用户
提问于 2019-08-22 22:45:39
回答 1查看 76关注 0票数 0

我想从包含一些表单的HTML上的RoboBrowser的出色特性中获益。

通常,Robobrowser是这样使用的:

代码语言:javascript
复制
url = "whatever.com"
browser = RoboBrowser(history=True)
browser.open(url)
thatForm = browser.get_form("thatForm")
thatForm["thisField"].value = "some value"
browser.submit(thatForm)

我想使用字符串的html内容进行同样的操作,我希望下面这样的内容能够工作:

代码语言:javascript
复制
content = "<html>...</html>"
browser = RoboBrowser(history=True)
browser.open(content)

但是,这不是,因为open方法期望字符串是url而不是html内容,有什么可以做的吗?有什么解决办法吗?这样我就可以在某个地方传递一个html内容字符串,并由RoboBrowser解析它吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-29 22:21:45

好的,我找到了一个解决方案,不是超级优雅,但它可以工作,基本上它都围绕着_update_state函数,在打开URL时,机器人浏览器在内部调用了这个函数:

代码语言:javascript
复制
def open(self, url, method='get', **kwargs):
    """Open a URL.

    :param str url: URL to open
    :param str method: Optional method; defaults to `'get'`
    :param kwargs: Keyword arguments to `Session::request`

    """
    response = self.session.request(method, url, **self._build_send_args(**kwargs))
    self._update_state(response)

因此,解决方案就是简单地创建一个带有我们想要解析的html的假响应:

代码语言:javascript
复制
fake_response = requests.Response()
fake_response._content = the_html_we_want_Robobrowser_to_parse
browser = RoboBrowser()
browser._update_state(fake_response)
my_form = browser.get_form("myform")
browser.submit_form(my_form)

和瞧:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57617859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档