Python 区分具有相同名称的html表单选择项
我正在尝试使用Mechanize在Python中动态填充表单。然而,当我检查包含表单的HTML页面的源代码时,我意识到表单上的一些控件具有相同的名称。以下是表格的摘录:Python 区分具有相同名称的html表单选择项,python,html,mechanize,Python,Html,Mechanize,我正在尝试使用Mechanize在Python中动态填充表单。然而,当我检查包含表单的HTML页面的源代码时,我意识到表单上的一些控件具有相同的名称。以下是表格的摘录: <form action="[some website]" method=post> <table> <tr><td> <select NAME="mv_searchspec" size="1"> <op
<form action="[some website]" method=post>
<table>
<tr><td>
<select NAME="mv_searchspec" size="1">
<option VALUE="1119">Fall 2011 (1119)</option>
<!-- other options here -->
</select>
</tr><td>
<tr><td>
<select NAME="mv_searchspec" size="1">
<option VALUE="">Select Department</option>
<option VALUE="ACC">ACC</option>
<!-- other options here -->
</select>
</tr></td>
</table>
</form>
2011年秋季(1119)
选择部门
行政协调会
有没有一种方法可以在不使用名称/id标识的情况下获取每个SELECT控件的可能_项?正如zneak所说,处理是特定于后端的。需要了解的重要一点是,指定了属性“name”的每个元素都将通过POST/GET发送,即使它是空的。因此,区分它们的方法只是根据它们的顺序。正如zneak所说,处理是特定于后端的。需要了解的重要一点是,指定了属性“name”的每个元素都将通过POST/GET发送,即使它是空的。因此,区分它们的方法只是根据它们的顺序。您可以使用解析响应来获得选择选项
import mechanize
from BeautifulSoup import BeautifulSoup
br = mechanize.Browser()
resp = br.open('your_url')
soup = BeautifulSoup(resp.get_data())
second_select = soup.findAll('select', name="mv_searchspec")[1]
# now use BeautifulSoup API to get the data you want
你不能像br['mv_searchspec']='foo'
那样做,因为这显然是模棱两可的。不过,你应该能够做到这一点
br.select_form(nr=0) # select index
controls = br.form.controls
controls[desired_index]._value = 'your_value'
...
br.submit()
您可以使用解析响应以获取选择选项
import mechanize
from BeautifulSoup import BeautifulSoup
br = mechanize.Browser()
resp = br.open('your_url')
soup = BeautifulSoup(resp.get_data())
second_select = soup.findAll('select', name="mv_searchspec")[1]
# now use BeautifulSoup API to get the data you want
你不能像br['mv_searchspec']='foo'
那样做,因为这显然是模棱两可的。不过,你应该能够做到这一点
br.select_form(nr=0) # select index
controls = br.form.controls
controls[desired_index]._value = 'your_value'
...
br.submit()
很可能有一种方法,尽管它是特定于后端的。在PHP中,最后一个值将覆盖其他值(除非名称以
[]
结尾,例如my\u searchspec[]
,在这种情况下,my\u searchspec
可以作为数组访问);在ColdFusion中,值之间用逗号分隔。很可能有一种方法,尽管它是特定于后端的。在PHP中,最后一个值将覆盖其他值(除非名称以[]
结尾,例如my\u searchspec[]
,在这种情况下,my\u searchspec
可以作为数组访问);在ColdFusion中,值由逗号分隔。