2013-04-08 2 views
1

Я хочу сделать это с помощью Python Mechanize. Это HTML страницы:Python mechanize checkboxes

<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

Спасибо. Отлично работает первая часть. Но не второй. –

+0

Можете ли вы дать мне сайт, на котором вы тестируете? Или напишите, что является результатом, если вы попытаетесь выполнить 'print br.find_control (type =" checkbox "). Items' перед циклом' for' – ton1c

+1

Я так выразился и отлично его работаю. Большое спасибо. для i в диапазоне (0, len (br.find_control (type = "checkbox"). items)): , если "изменить" в str (br.find_control (type = "checkbox"). items [i]): br.find_control (type = "checkbox"). items [i] .selected = False else: br.find_control (type = "checkbox"). items [i] .selected = True reponseaa = br.submit() –