我正在与robobrowser合作登录网站。
我遇到的问题是登录页面有2个表单,它们具有相同的操作,但名称不同。
<form action="/login" name="changedomain">
...
</form>
第二种形式是:
<form action="/login" name="signin">
...
</form>
我的python代码如下:
import re
from robobrowser import RoboBrowser
browser = RoboBrowser(history=True, parser="lxml")
browser.open("http://example.com")
form = browser.get_form()
问题是如果我使用:
form = browser.get_form()[1]
我收到BadRequestKeyError,但找不到任何关于如何按名称查找表单的文档。唯一的文档说使用该操作,但表单具有相同的操作属性。 欢迎任何建议。
答案 0 :(得分:1)
我使用以下代码处理代码;
form = browser.get_form('Form1')
这是另一个例子 - 打印表单的html;
from robobrowser import RoboBrowser
browser = RoboBrowser(history=True, parser="html.parser")
browser.open("https://stackoverflow.com")
form = browser.get_form(id="search")
print(form.parsed)
产量
<form action="/search" autocomplete="off" class="searchbar" id="search" method="get" role="search">
<input autocomplete="off" class="f-input js-search-field" maxlength="240" name="q" placeholder="Search…" tabindex="1" type="text" value=""/>
<button aria-label="Search..." class="btn-topbar-primary js-search-submit" type="submit"><svg aria-hidden="true" class="svg-icon iconSearch" height="18" viewbox="0 0 18 18" width="18"><path d="M12.86 11.32L18 16.5 16.5 18l-5.18-5.14v-.35a7 7 0 1 1 1.19-1.19h.35zM7 12A5 5 0 1 0 7 2a5 5 0 0 0 0 10z"></path></svg></button>
</form>
答案 1 :(得分:-1)
如何选择第二种形式的第一个答案是:
form = browser.get_forms()[1] # note the get_forms() not get_form()
关于如何查看表单来源的第二个问题的答案基本上是:
print(form) # this prints a dictionary of all input fields and their values from the selected form.