问题:Python Mechanize select form FormNotFoundError

我想选择一个带有机械化的表格。这是我的代码:

br = mechanize.Browser()
self.br.open(url)
br.select_form(name="login_form")

表格的代码:

<form id="login_form" onsubmit="return Index.login_submit();" method="post" action="index.php?action=login&server_list=1">

但我收到了这个错误:

mechanize._mechanize.FormNotFoundError: no form matching name 'login_form

解答

问题是你的表单没有名字,只有一个id,而且是login_form。您可以使用谓词:

br.select_form(predicate=lambda f: f.attrs.get('id', None) == 'login_form')

(如果f.attrs具有键id并且如果是,则id值等于login_form)。或者,您可以传递页面中表单的编号,如果您知道它是第一个,第二个等。例如,下面的行选择第一个表单:

br.select_form(nr=0)
Logo

Python社区为您提供最前沿的新闻资讯和知识内容

更多推荐