2010-04-06 13 views
29

Estoy intentando mecanizar seleccionar un formulario de una página, pero el formulario en cuestión no tiene un atributo de "nombre" en el html. ¿Que debería hacer? cuando trato de usarPython Mechanize seleccione un formulario sin nombre

br.select_form(name = "") 

Recibo errores de que ningún formulario se declara con ese nombre, y la función requiere una entrada de nombre. Solo hay un formulario en la página, ¿hay alguna otra forma en que pueda seleccionar esa forma?

Respuesta

53

Probar:

br.select_form(nr=0) 

para seleccionar la primera forma

En Mechanize source,

def select_form(self, name=None, predicate=None, <b>nr=None</b>): 
    """ 
    ... 
    nr, if supplied, is the sequence number of the form (where 0 is the 
    first). 
    """ 
+0

Gracias. Eso funcionó para mi instancia con solo una forma. Solo por curiosidad, ¿cómo crees que se podría hacer de muchas formas? ¿O todos sin nombre o algunos nombrados y otros sin nombre? –

+1

@mvid, sí, un documento puede tener muchas formas y los nombres también son opcionales, y mecanizar no debería ser un problema con eso. – YOU

+0

donde podemos obtener el valor del predicado de la forma? –

0

Si desea ejecutar código para múltiples formas, no importa lo que su nombre es, usted puede recorrer todos los formularios, permitiendo que el script sepa qué formulario funcionará a continuación.

currentForm = 0 
for form in br.forms(): # Iterate over the forms 
     br.select_form(nr = currentForm) # Select the form 
     ''' 
     The code you want to run for every form 
     ''' 
     currentForm += 1 # Add 1 to the current working form so the script knows what form is working next 
Cuestiones relacionadas