Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 区分具有相同名称的html表单选择项_Python_Html_Mechanize - Fatal编程技术网

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

我正在尝试使用Mechanize在Python中动态填充表单。然而,当我检查包含表单的HTML页面的源代码时,我意识到表单上的一些控件具有相同的名称。以下是表格的摘录:

<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中,值由逗号分隔。