2010-04-06 4 views
29

Ich versuche, Mechanize ein Formular aus einer Seite auswählen, aber das Formular hat keine "Name" -Attribut im HTML. Was soll ich machen? Wenn ich versuche zu verwendenPython Mechanize wählen Sie ein Formular ohne Namen

br.select_form(name = "") 

Ich bekomme Fehler, dass keine Form mit diesem Namen deklariert ist, und die Funktion erfordert eine Namenseingabe. Es gibt nur ein Formular auf der Seite. Gibt es eine andere Möglichkeit, das Formular auszuwählen?

Antwort

53

Versuchen:

br.select_form(nr=0) 

die erste Form wählen

In 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

Danke. Das hat mit nur einem Formular für meine Instanz funktioniert. Nur aus Neugier, wie könnte es mit vielen Formen gemacht werden? Entweder alle unbenannten oder einige benannte und andere unbenannte? –

+1

@mvid, yeah, ein Dokument könnte viele Formen haben und Namen sind auch optional, und mechanize sollte kein Problem damit sein. – YOU

+0

wo können wir Prädikat Wert von Formular bekommen? –

0

Wenn Sie Code für mehrere Formulare ausführen wollen, egal, was ihr Name ist, können Sie kann jedes Formular durchlaufen, so dass Ihr Skript weiß, welches Formular als nächstes funktioniert.

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 
Verwandte Themen