2011-09-18 16 views
5

el código HTML que estoy tratando de hacer análisis sintáctico mecanizar es:Python Mechanize: cómo seleccionar una lista desplegable cuando dos tienen el mismo nombre en la página web?

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

Pero luego a la derecha por debajo de ella hay otro desplegable, con el siguiente código:

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

Ahora si ayuda en absoluto No necesito seleccionar ningún valor del último, ya que es opcional.

Cuando intento

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

me sale:

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

¿Hay alguna manera de seleccionar un control en función de su identificación, utilizando mechanize.Browser() (manteniendo todos los demás forma sintaxis)?

Gracias

+5

Puede acceder a los controles por su índice en el formulario, vea esta respuesta http://stackoverflow.com/questions/6482308/differentiating-between-html-form-select-items-with-the-same-name/ 6483458 # 6483458 – cerberos

+0

Muchas gracias, esto funcionó. –

+0

¿Puedes hacer +1 en la respuesta en el enlace? – cerberos

Respuesta

1

La documentación externa para mechanize es bastante pequeño y contiene sólo algunos ejemplos, pero la documentación de código es mucho más extensa.

Al no haber probado esto, con una instancia HTMLForm llamada form debe poder llamar al form.find_control(id="topic_id3") y obtener lo que desee. No estoy seguro de cómo hacer esto con solo un objeto Browser, pero ¿ha intentado br.find_control(id="topic_id3")?

Cuestiones relacionadas