用selectcontrol python机械化问题

时间:2011-08-04 23:22:18

标签: python list screen-scraping mechanize asterisk

基本上其中一个选择控件有几个“选项”可供选择

如果我使用:

for t in br.forms():
        print t

我得到的输出是

`SelectControl(ctl00$cph2$ddlSchool=[*2])
 SelectControl(ctl00$cph2$ddlMarkingPeriod=[*1, 2, 3, 4])
 SelectControl(ctl00$cph2$ddlCourseSection=[*1120:01:1, 1515:01:1, 2445:01:1, 3723:02:1, 4140:03:1, 5100:08:1, 1:01:1, 9970:07:1, 9913:01:1])>
 SubmitControl(ctl00$cph2$btnExecuteReport=Execute) (readonly)`

注意星号

现在,我想要的是在我的程序中将列表存储在“ctl00 $ cph2 $ ddlCourseSection”下,但如果我尝试存储它然后打印它:

save = br.form['ctl00$cph2$ddlCourseSection'] 
print save

我得到的输出是:

['1120:01:1']

而不是:

['1120:01:1', '1515:01:1', '2445:01:1', '3723:02:1', '4140:03:1', '5100:08:1', '1:01:1', '9970:07:1', '9913:01:1']

那么我怎样才能保存列表中的所有元素而不仅仅是旁边带星号的元素?

2 个答案:

答案 0 :(得分:0)

在我看来,您正在尝试将多个值分配给单选表单字段。您必须有一个多选才能成功完成。星号表示所选元素,非星号表示项目列表中的其他选项。您确定使用的是多选而非常规选择框吗?表单不允许您为单个选择选择多个值。

答案 1 :(得分:0)

通过这样做,您只能获得默认值。

save = br.form['ctl00$cph2$ddlCourseSection'] 
print save

获取您必须使用的所有值

save = br.form.possible_items('ctl00$cph2$ddlCourseSection')
print save

我没有测试它,但我认为它会起作用。