以前用过 Mechanize 。尝试填写输入没有名称或 ID 的表单。他们只有一个类(class)。有没有办法像选择表格时那样通过数字来做到这一点?
<form class="go-action-form">
<div class="go-action-form-no-auth">
<input class="firstname" type="text" placeholder="First Name" data-required />
<input class="lastname" type="text" placeholder="Last Name" data-required />
<input class="email" type="text" placeholder="Email" data-required data-validation="email" />
<input type="submit" class="submit-petition" id="submit-petition-embed-ub39aca073fec49a690c5f3acb4152aae" value="Submit My Name" />
</div>
</form>
这就是我所拥有的。
br = mechanize.Browser()
br.set_handle_equiv(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)
url = "https://generationopportunity.org/petitions/free-the-food-trucks-in-raleigh/?utm_content=bufferfa496&utm_medium=social&utm_source=twitter.com&utm_campaign=buffer"
br.open(url)
br.select_form(nr = 1)
br.form.set_value(firstname, nr=0)
br.form.set_value(lastname, nr=1)
br.form.set_value(email, nr=2)
br.form.set_value(zip, nr=3)
print br.form.controls[0]
print br.form.controls[1]
print br.form.controls[2]
print br.form.controls[3]
br.submit()
编辑
我想出了如何在我上面的内容中添加值。现在我只是不知道如何提交它。我试了一下,它说 br.submit() -- AttributeError: 'NoneType' object has no attribute 'click'
谢谢
最佳答案
br.open(url)
# forms = [f for f in br.forms()]
# print forms[1]
# print forms[1].controls[0]
br.select_form(nr = 1)
br.form.set_all_readonly(False)
br.form.set_value(firstname, nr=0)
br.form.set_value(lastname, nr=1)
br.form.set_value(email, nr=2)
br.form.set_value(zip, nr=3)
br.submit()
关于Python Mechanize 向没有 ID 或名称的表单输入添加值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32054420/