2009-10-10 7 views
5

Ich benutze Mechanize (die clientform verwendet) für einige Web-Crawler in Python und da es JS nicht unterstützt, möchte ich einen Wert einer nicht vorhandenen Eingabe in einem Formular (die Eingabe wird von JS generiert). Wie kann ich das machen?Wie setze ich ein nicht existierendes Feld in Python ClientForm?

Der Fehler ist ähnlich dem Sie, wenn Sie bekommen versuchen

from mechanize import Browser 
br = Browser() 
page = br.open('http://google.com') 
br.select_form(nr = 0) 
br['unexistent'] = 'hello' 

Antwort

16

Sie müssen ausführen, um zuerst das Steuerelement zum Formular hinzufügen und dann fixup die Form.

br.form.new_control('text','unexistent',{'value':''}) 
br.form.fixup() 
br['unexistent'] = 'hello' 

Das ist wirklich nicht sehr gut dokumentiert, und in der Quelle unter fixup() gibt es den Kommentar:

This method should only be called once, after all controls have been 
added to the form. 

Allerdings ist es nicht so aus, wie es etwas zu gefährlich macht. Wahrscheinlich fügen Sie zuerst das Steuerelement hinzu, bevor Sie mit etwas anderem im Formular herumspielen.

+0

Danke, wirkt wie ein Charme – Fluffy

Verwandte Themen