3 Stimmen

Python, html-formular analysieren

Wie kann ich Eingaben von HTML-Formularen auf anderen Websites erhalten? Ich möchte, dass es eine Rückkehr eines Wörterbuchs wie folgt:

form = [('name' = 'somename', 'type' = 'text', 'value':''},{' name' = 'somename', 'type' = 'submit', 'value': ' submit ').

Entschuldigung für mein Englisch.

0 Stimmen

Versuchen Sie, eine HTML-Datei zu analysieren (möglicherweise zurückgegeben von urllib.urlopen, um eine URL zu öffnen), oder handelt es sich um etwas basierend auf Django?

1 Stimmen

Ich versuche, Formulare von anderen Websites zu analysieren.

3voto

Tim McNamara Punkte 17453

Sie werden wahrscheinlich nicht in der Lage sein, Formulardaten von anderen Benutzern auf anderen Websites abzurufen. Wenn Sie ein Skript verwenden möchten, um Daten an ein Formular zu senden, ist mechanize ein Werkzeug, das dies recht einfach macht.

0 Stimmen

Vielen Dank für die Antwort, aber die Formulare sind leider nicht statisch und jedes Mal anders, daher ist eine vollständige Analyse erforderlich. Mit Mechanize wird es nicht absolut praktisch sein.

0 Stimmen

In diesem Fall verwenden Sie lxml.html, um das Dokument zu analysieren, Formular- und Eingabetags zu finden (möglicherweise unter Verwendung von XPath-Abfragen) usw.

2 Stimmen

Derek, sicherlich werden die Formulare mit dem

-Tag generiert. Das sollte alles sein, was Sie zum Einstieg benötigen. Wenn die Formulare undeterministisch sind, wird Ihnen kein Skript helfen können. Wenn Sie meinen, dass die Formulare von clientseitigem JavaScript generiert werden, kann Browserautomatisierung helfen.

2voto

Yuda Prawira Punkte 10895

Ja, Mechanisieren ist süß!

import mechanize

# Browser
br = mechanize.Browser()
br.set_handle_equiv(True)
br.set_handle_gzip(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; de-DE; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]

# Wir inspizieren alle Formularelemente auf der Website http://stackoverflow.com
br.open('http://stackoverflow.com')
for form in br.forms():
    print form

1voto

Ivo van der Wijk Punkte 15553

Schau dir mechanize, lxml.html und BeautifulSoup an.

3 Stimmen

BeautifulSoup wird eingestellt. Besser nicht erwähnen.

0 Stimmen

BeautifulSoup ist auch viel langsamer als lxml.html

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X