2013-04-08 128 views
1

我想用Python Mechanize来做到这一点。 这是HTML页面:Python机械化复选框

<form action="config.php" method="POST"> 
<div> 
<img src="/images/delete1.png" /> 
<strong>EmptyDir1</strong><br /> 
<input type="checkbox" value="3" name="manager[]" /> 
</div> 

<div> 
<img src="/images/delete2.png" /> 
<strong>EmptyDir2</strong><br /> 
<input type="checkbox" value="4" name="manager[]" /> 
</div> 

<div> 
<img src="/images/copy.png" /> 
<strong>CopyConf</strong><br /> 
<input type="checkbox" value="22" name="manager[]" /> 
</div> 
................. and so on another 20 

<div><input type="submit" value="Do Jobs!" /></div> 
</form> 

我有2个问题:1。 我如何可以选择所有从该页面复选框并提交? 2.如何选择所有复选框,但名称为“修改”的复选框除外? 代码示例将非常棒。由于

回答

1

使用此为每个复选框:

import mechanize 

br = mechanize.Browser() 
br.open(URL) 
br.select_form(nr=0) 
for i in range(0, len(br.find_control(type="checkbox").items)): 
    br.find_control(type="checkbox").items[i].selected =True 
reponse = br.submit() 
print reponse.read() 

而这对于除此之外的所有修改复选框(还没有检查它):

import mechanize 

br = mechanize.Browser() 
br.open(URL) 
br.select_form(nr=0) 
for i in range(0, len(br.find_control(type="checkbox").items)): 
    if "modify" not in str(br.find_control(type="checkbox").items[i]): 
     br.find_control(type="checkbox").items[i].selected =True 
reponse = br.submit() 
print reponse.read() 
+0

感谢。第一部分非常有效。但不是第二个。 – 2013-04-08 12:31:42

+0

你可以给我你正在测试的网站吗?或者,如果你尝试在'for'循环之前执行'print br.find_control(type =“checkbox”)。items',那么输出什么是输出 – ton1c 2013-04-08 12:39:50

+1

我这样说,它的工作完美。非常感谢。如果在str(br.find_control(type =“checkbox”)。items [i])中的“modify”: br.find_control(type =“checkbox”)。items [i] .selected = False else: br.find_control(type =“checkbox”)。items [i] .selected = True reponseaa = br.submit() – 2013-04-08 12:42:20