根据表单输入的名称选择正确的表单

时间:2016-09-30 17:46:31

标签: python mechanize

我想在多个网站上提交表单。通常我不能完全知道表单名称或表单ID,但我知道我要提交的输入名称。

让我们说有一个网站里面有几种形式。我的代码应检查所有表单,如果其中一个表单的输入值为"生日"它会提交该表格。如果有多个表单,它将全部提交。

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:1)

您基本上可以遍历所有表单并跳过不包含所需输入的表单:

for form in br.forms():
    if not form.find_control(name="birthday"):
         continue
    # fill form and submit here

有关find_control() here的更多信息。

答案 1 :(得分:0)

您需要使用iterator来检查网站中的所有表单。在这种情况下,我们将使用for。但这并不能让我们知道我们正在研究哪种形式,它只是让我们使用它。因此,当我们在新的迭代/循环开始时更改表单时,我们将为变量分配0(第一个表单的ID)并向其添加1。

currentForm = 0
for form in br.forms(): # For every form in the website
        currentForm += 1 # Add 1 to the current form so that the script knows which form we will be working next
        if not forms.find_control(name = "birthday"): # If the form isn't about birthday
                continue # Go to the next iteration / loop ignoring the statements below
        br.select_form(nr = currentForm) # Select the birthday form
        br.form["birthday"] = "Fill this with what you want" # Writing to the form
        br.submit() # Submit the working form

注意:x += y等于x = x + y