我想在多个网站上提交表单。通常我不能完全知道表单名称或表单ID,但我知道我要提交的输入名称。
让我们说有一个网站里面有几种形式。我的代码应检查所有表单,如果其中一个表单的输入值为"生日"它会提交该表格。如果有多个表单,它将全部提交。
我怎样才能做到这一点?
答案 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