2013-04-08 175 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