Ein Formular mit Anfragen Python
So, ich will automatisieren Sie das ausfüllen und Absenden eines Formulars, und ich bin mit Requests
zu tun.
Von der Inspektion von Elementen, ich weiß, die url zu Unterwerfen und die Art der submition (post):
method="post"
action="/sformsubmit"
enctype="multipart/form-data"
Mein problem ist, dass meine Anfrage nicht durch und wird ziemlich neu in diesem, ich bin nicht sicher, warum.
Auf meiner Webseite habe ich zwei buttons nebeneinander, etwa so :
___________________________ ________________________________
| Submit decleration | | Reset Form |
___________________________ ________________________________
Und wenn ich überprüfen Sie die Elemente auf dieser Linie, den ich bekommen:
<td align="center" colspan="2">
<input type="hidden" name="inLeader" value>
<input type="hidden" name="inMember" value>
<input type="hidden" name="version" value="0">
<input type="hidden" name="key" value="2013:a:c:3:2s">
<input type="submit" value="Submit declaration">
<input type="reset" value="Reset form">
</td>
Ich versuche die folgende:
>>> payload = {'inLeader':'', 'inMember':'', 'version':'0', 'key':'2013:a:c:3:2s'}
Aber es scheint nicht zu arbeiten, und nicht dass irgendein Fehler.
Jede Hilfe wäre dankbar. Vielen Dank im Voraus
Welche Fehler sind Sie immer? Was ist die Antwort? Ihre Nutzlast ist falsch, aber es ist immer noch schwer zu beantworten deine Frage richtig, ohne zu wissen, was die eigentliche Antwort ist.
Im nicht immer alle Fehler, die es zu gehen scheint, gut durch, nur es passiert nichts. Die
Traceback? Auch die URL, die Sie versuchen zu buchen, wäre schön zu haben.
die URL ist eine private link, wo wir uns Aufgaben zu, es würde nicht zugänglich sein, ohne einen Benutzernamen und ein Passwort
Im nicht immer alle Fehler, die es zu gehen scheint, gut durch, nur es passiert nichts. Die
status_code
wenn ich über p.status_code = 200
Traceback? Auch die URL, die Sie versuchen zu buchen, wäre schön zu haben.
die URL ist eine private link, wo wir uns Aufgaben zu, es würde nicht zugänglich sein, ohne einen Benutzernamen und ein Passwort
InformationsquelleAutor user2897415 | 2013-10-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Okay, Ihre Nutzlast ist falsch. ABER. Ich bin mir nicht sicher, ob das ändern, wird es tatsächlich helfen, weil Sie noch nicht die Fehlermeldung, die Sie empfangen.
Was Sie brauchen, um zu verstehen, über HTML-Formulare und POST-requests ist, dass beim klicken auf einen submit-button in einem Formular, es sendet die
value
Attribut jedes Feld mit einemname
Attribut. Das input Feld mit dem Typsubmit
nicht geschickt bekommen zum Beispiel. Es hat keinename
. Ich bin misstrauisch, dass dieinLeader
undinMember
Felder keine Daten. Ist dieser eingestellt wird, per Javascript irgendwie?Erwähnst du in einem Kommentar, dass Sie müssen angemeldet sein, um Zugriff auf das Formular? Dies bedeutet höchstwahrscheinlich, dass Sie Sie auch benötigen, senden Sie die korrekten cookie zusammen mit der Anforderung. So, den Besuch der URL fragt man mich nach einem Benutzernamen/Passwort. Diese website ist mit basic-auth.
requests
dies unterstützt. Beispiel unten:Versuchen Sie damit, dass Sie eine get-Anforderung, und sehen, wenn Sie mindestens eine 200 Antwort. Das bedeutet, dass die auth arbeitet. Dann können Sie versuchen und tun, die eigentliche post.
<input type="submit" value="Submit declaration">
wurde geändert, um<input type="submit" value="Change declaration">
und in, dass man Sie immer noch leerWirklich? Was Sie wirklich brauchen, um zu Debuggen, das genau ist nicht der Quellcode. Aber eine aktuelle post-Anfrage. Sie können diese in Chrome unter die
network
tab des chrome-dev-tools. Wenn Sie das Formular senden Sie es manuell erfassen die POST und Sie können sehen, welche Informationen gesendet wurde. Die URL sieht in Ordnung für mich.wo sollte ich suchen in der
network
tab, um zu sehen, was gesendet wird ... ich klickte auf den Antrag und in diepreview
Registerkarte zeigt er mir diehtml : what I see in inspect element
so was zeigt mir, was gesendet wirdKlicken Sie auf die spezifischen http-Anforderung und das anzeigen der Kopfzeilen.
danke, habe es funktioniert, das problem war nicht mit BasicAuth - prost!
InformationsquelleAutor aychedee