2011-09-18 1 views
5

私はパースを機械作るしようとしているHTMLは次のとおりです。Python Mechanize:Webページに2つの名前が同じときにドロップダウンリストを選択するにはどうすればよいですか?

<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[]' 

は、私は他のすべてを保持したままmechanize.Browserを()(使用して、そのIDに基づいて制御を選択することができます方法はありますフォーム構文)? mechanizeため

おかげ

+5

フォームのインデックスでコントロールにアクセスできます。この回答を参照してください。http://stackoverflow.com/questions/6482308/differentiating-between-html-form-select-items-with-the-ame-name/ 6483458#6483458 – cerberos

+0

ありがとう、これはうまくいきました。 –

+0

リンクの回答を+1できますか? – cerberos

答えて

1

外部ドキュメントは非常に小さく、ほんの数例が含まれていますが、中にコードのドキュメントは、はるかに広範です。

HTMLFormformと呼ばれるインスタンスでこれをテストしていない場合は、form.find_control(id="topic_id3")を呼び出して必要なものを取得できるはずです。私はちょうどBrowserオブジェクトでこれを行う方法はわかりませんが、br.find_control(id="topic_id3")を試しましたか?

関連する問題