2011-09-18 5 views
5

Ben mechanize parse yapmaya çalışıyorum html geçerli: o zamanPython Mechanize: Web sayfasında aynı ada sahip olduğunda bir açılır liste nasıl seçilir?

<select id="topic_id2" name="topics[]" title="blabla" tabindex="4" class="createSelect"> 
here go options 

Ama başka açılır aşağıdaki kodla vardır hemen altında: hiç de yardımcı Şimdi eğer

<select id="topic_id3" name="topics[]" title="optional" tabindex="5" class="createSelect"> 

İsteğe bağlı olduğundan, ikincisinden herhangi bir değer seçmem gerekiyor.

Ben

br = mechanize.Browser() 
br.select_form(name="form") 
br["topics[]"] = ["Internet"] 

çalıştığımda alıyorum:

mechanize._form.AmbiguityError: more than one control matching name 'topics[]' 

Ben onun kimliği dayalı bir denetim seçebileceğiniz bir yolu mechanize.Browser() (korurken kullanarak, var mı tüm diğer form sözdizimi)?

Teşekkür

+5

Denetimlere formdaki dizinlerine göre ulaşabilirsiniz, bkz. Http://stackoverflow.com/questions/6482308/differentiating-between-html-form-select-items-with-the-same-name/ 6483458 # 6483458 – cerberos

+0

Çok teşekkürler, bu işe yaradı. –

+0

Bağlantıdaki cevabı + 1'leyebilir misiniz? – cerberos

cevap

1

mechanize için dış dokümantasyon oldukça küçüktür ve sadece birkaç örnek içerir, ancak in-kod dokümantasyonu çok daha geniş kapsamlıdır.

form adı verilen HTMLForm örneğiyle bunu test etmemişseniz, form.find_control(id="topic_id3") numaralı telefonu arayabilir ve istediğiniz şeyi alabilirsiniz. Bunu bir Browser nesnesiyle nasıl yapacağınızdan emin değilim, ancak br.find_control(id="topic_id3")'u denediniz mi?