2011-09-18 77 views
5

,我試圖使機械化解析HTML是:Python機械化:如何選擇一個下拉列表,當兩個在網頁中具有相同的名稱?

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

但隨後右下方它還有另外一個下拉列表中,用下面的代碼:

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

現在,如果它有助於在所有,我不需要從後者中選擇任何值,因爲它是可選的。

當我嘗試

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

我得到:

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

有沒有一種方法,我可以根據其ID選擇控制,使用mechanize.Browser()(同時保留所有其他形式語法)?

感謝

+5

你可以通過它們的索引在窗體中訪問控件,看到這個答案http://stackoverflow.com/questions/6482308/differentiating-between-html-form-select-items-with-the-same-name/ 6483458#6483458 – cerberos

+0

非常感謝,這工作。 –

+0

你能在鏈接中給出答案嗎? – cerberos

回答

1

mechanize外部文檔是相當小的,只包含幾個例子,但在代碼文件是要廣泛得多。

沒有測試過這個,HTMLForm實例叫做form你應該可以調用form.find_control(id="topic_id3")並得到你想要的。我不知道如何僅使用Browser對象執行此操作,但是您是否嘗試過br.find_control(id="topic_id3")

相關問題