httplib2 und Formulare

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
kmielke
User
Beiträge: 3
Registriert: Donnerstag 15. November 2012, 15:22

Hallo,

eventuell kann mir jemand helfen. Ich versuche auf einer Webseite ein Formular abzusenden. Leider gibt es auf dieser Seite 2 Formulare, wobei dass zweite das ist, das ich versenden will. In den Beispielen der Doku finde ich zwar Info's wie man Formulare versendet, aber eben nicht, wenn es mehrere gibt.

Weiss das jemand?

Danke
Gruß
Kester
Benutzeravatar
sparrow
User
Beiträge: 4193
Registriert: Freitag 17. April 2009, 10:28

Ich habe noch nicht mit der httplib2 gearbeitet, vielleicht könntest du hier ein Codebeispiel bringen wie du ein einziges Formular auf der Seite "abschicken" würdest?
kmielke
User
Beiträge: 3
Registriert: Donnerstag 15. November 2012, 15:22

ich habe es so gemacht, wie es hier beschrieben ist.

http://httplib2.googlecode.com/hg/doc/h ... l#examples
BlackJack

@kmielke: Ich verstehe das Problem nicht. Man geht bei jedem Formular gleich vor. Heraus finden ob es GET oder POST ist, URL und nötige Felder ermitteln und daraus dann eine Anfrage basteln. Das ist doch völlig unabhängig davon ob nun ein oder hundert Formulare in der Webseite enthalten sind‽ Du hast das für das erste Formular gemacht, warum kannst Du es nicht auch einfach für das zweite machen? Wo ist das *konkrete* Problem dabei? Bei welchem Schritt kommst Du nicht weiter?

Lesestoff zu HTML-Formularen: http://de.selfhtml.org/html/formulare/index.htm
kmielke
User
Beiträge: 3
Registriert: Donnerstag 15. November 2012, 15:22

@BlackJack,

danke für den Lesestoff, der mir so natürlich nicht hilft.

Das Beispiel das ich benutzt habe geht davon aus, dass es nur ein Formular in der Seite gibt. Mein *konkretes* Problem liegt darin, das ich nicht weiss, wie ich mit HTTPLIB2 ein bestimmtes Formular identifizieren und ansprechen kann. Also quasi das, was du in deiner Antwort als "basteln" beschrieben hast. Nur das du offensichtliche weisst, wie es geht. Eventuell kannst du es mir ja erklären. Ich gehe davon aus, dass du weisst, wie httplib2 funktioniert, weil du ja sonst nicht "geantwortet" hättest. ;)
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

kmielke hat geschrieben:Mein *konkretes* Problem liegt darin, das ich nicht weiss, wie ich mit HTTPLIB2 ein bestimmtes Formular identifizieren und ansprechen kann.
Irgendwie verstehe ich dein Problem nicht. ich kenne zwar httplib2 auch nicht, aber ich kenne HTML und andere Bibliotheken. Du brauchst doch nur die Felder des zweiten Formulars zu füllen. Vielleicht hilft es, wenn du ein Minimalbeispiel des HTML-Textes lieferst mit dem du Schwierigkeiten hast.

Oder möchtest du dynamisch ein spezielles Formular auf der Seite ermitteln? Dann fehlen uns natürlich sämtliche Anhaltspunkte wie die Kriterien dafür aussehen.
BlackJack

@kmielke: Es macht keinen Unterschied ob da nur ein Formular oder mehrere auf der Seite sind, die Vorgehensweise ist immer die selbe. Auch wenn es nur ein Formular gibt, muss man heraus finden mit welcher Methode, welchen Daten, und an welche URL das Ergebnis geht. Genau das ist es was ein Formular identifiziert. Wenn Du das bei einem Formular herausfinden konntest, dann verstehe ich nicht wie Du das bei einem anderen nicht herausfinden kannst.

Der Lesestoff den ich verlinkt habe erklärt wie HTML-Formulare aufgebaut sind. Also auch was man darüber durch lesen des HTML alles heraus finden kann und in welchen Elementen das jeweils steht. Das muss man wissen wenn man selber eine Anfrage erstellen möchte, die so aussieht als käme sie von einem ``<form>``. Wie kann das also nicht hilfreich sein?

@/me: Zumindest nach dem Quelltextbeispiel das von kmielke verlinkt wurde, wird die Anfrage auf dem gleichen Niveau wie bei `urllib`/`urllib2` erstellt. Das heisst der Autor wusste an der Stelle die URL, die Methode, und die Feldnamen und hat sie nicht per Code aus der Seite geholt:
http://httplib2.googlecode.com/hg/doc/html/libhttplib2.html#examples hat geschrieben:Here is an example of providing data to an HTML form processor. In this case we presume this is a POST form. We need to take our data and format it as “application/x-www-form-urlencoded” data and use that as a body for a POST request.

Code: Alles auswählen

>>> import httplib2
>>> import urllib
>>> data = {'name': 'fred', 'address': '123 shady lane'}
>>> body = urllib.urlencode(data)
>>> body
'name=fred&address=123+shady+lane'
>>> h = httplib2.Http()
>>> resp, content = h.request("http://example.com", method="POST", body=body)
Benutzeravatar
sparrow
User
Beiträge: 4193
Registriert: Freitag 17. April 2009, 10:28

Du kannst dir auch ein Browserplugin installieren, das dir dabei helfen kann POST-Daten anzusehen. Für Firefox kann das unter anderem Firebug. Schick das entsprechende Formular auf der Webseite ab und schau dir dann an welche URL anschließend via POST aufgerufen wird, und welche Daten dabei übergeben werden.
Ansonsten kannst du die Informationen, wie hier schon geschrieben, aus dem HTML-Code der Seite herauslesen.
Antworten