如何使用Python选择表单中的选项?

| 我想知道如何选择格式如下的选项
  <td align=\"left\">
                  <select name=\"FORM1\" id=\"FORM1\" multiple=\"multiple\" size=\"5\">
                      <option value=\"Value1\">Value1</option>
                      <option value=\"Value2\">Value2</option>
                  </select>
  </td>
现在,我正在使用机械化连接到网站并遍历所需的页面。该页面具有许多表格,例如FORM1,FORM2,FORM3等,并带有选项。我想选择(启用)Value1,然后告诉机械化实例点击“提交”按钮。哪种方法可以快速启用基于表单名称的选项?     
已邀请:
        以下是一些基本用法示例,可帮助您入门:
>>> import mechanize
>>> br = mechanize.Browser()
>>> br.open(\'http://www.w3schools.com/html/html_forms.asp\')
表单具有
name
属性;有时虽然是空的:
>>> [f.name for f in br.forms()]
[\'searchform\', None, None, None, None, \'input0\']
表单具有一系列控制;控件也有名称:
>>> forms = [f for f in br.forms()]
>>> forms[1].controls[0].name
\'firstname\'
>>> [c.name for c in forms[3].controls]
[\'sex\']
您可以在控件中获得项目列表:
>>> forms[3].controls[0].get_items()
[<Item name=\'male\' id=None type=\'radio\' name=\'sex\' value=\'male\'>, <Item name=\'female\' id=None type=\'radio\' name=\'sex\' value=\'female\'>]
对于单选按钮,您必须进行单个选择:
>>> forms[3][\'sex\'] = [\'male\']
但是选择必须在列表中:
>>> forms[3][\'sex\'] = \'male\'
Traceback (most recent call last):
  File \"<stdin>\", line 1, in <module>
  File \"/Library/Python/2.6/site-packages/mechanize/_form.py\", line 2782, in __setitem__
    control.value = value
  File \"/Library/Python/2.6/site-packages/mechanize/_form.py\", line 1977, in __setattr__
    self._set_value(value)
  File \"/Library/Python/2.6/site-packages/mechanize/_form.py\", line 1985, in _set_value
    raise TypeError(\"ListControl, must set a sequence\")
TypeError: ListControl, must set a sequence
对于复选框,您可以进行多个选择:
>>> [(c.name, c.get_items()) for c in forms[4].controls]
[(\'vehicle\', [<Item name=\'Bike\' id=None type=\'checkbox\' name=\'vehicle\' value=\'Bike\'>, <Item name=\'Car\' id=None type=\'checkbox\' name=\'vehicle\' value=\'Car\'>])]
>>> forms[4][\'vehicle\'] = [\'Bike\', \'Car\']
您可以在此处找到更多信息(从Matt Hempel窃取的链接:)。     
        当您说页面具有多种形式时,您是说页面上有多个
<form>
元素还是多个表单字段(例如
<select>
)? python的Mechanize文档概述了如何选择列表项。这是他们提供的示例:
# Controls that represent lists (checkbox, select and radio lists) are
# ListControl instances.  Their values are sequences of list item names.
# They come in two flavours: single- and multiple-selection:
form[\"favorite_cheese\"] = [\"brie\"]  # single
在您的情况下,选择
Value1
的代码如下所示:
form[\"FORM1\"] = [\"Value1\"]
    

要回复问题请先登录注册