Verwenden Sie Python, um sich bei der Website anzumelden, füllen Sie ein Formular aus und melden Sie sich dann ab

Lesezeit: 3 Minuten

Als Teil meines Bestrebens, bei Python besser zu werden, versuche ich jetzt, mich bei einer Website anzumelden, die ich häufig besuche, mir selbst eine private Nachricht zu senden und mich dann abzumelden. Bisher habe ich es geschafft, mich anzumelden (mit urllib, cookiejar und urllib2). Ich kann jedoch nicht herausfinden, wie ich das erforderliche Formular ausfüllen muss, um mir selbst eine Nachricht zu senden.

Das Formular befindet sich unter /messages.php?action=send. Es gibt drei Dinge, die ausgefüllt werden müssen, damit die Nachricht gesendet werden kann: drei Textfelder mit den Namen Name, Titel und Nachricht. Zusätzlich gibt es einen Submit-Button (namens „submit“).

Wie kann ich dieses Formular ausfüllen und versenden?

  • Mögliches Duplikat von Formularwerten auf einer Webseite über ein Python-Skript (nicht getestet)

    – ravi404

    23. Januar 2014 um 8:26 Uhr

Benutzeravatar von Jan Vorcak
Jan Vorcak

import urllib
import urllib2

name =  "name field"
data = {
        "name" : name 
       }

encoded_data = urllib.urlencode(data)
content = urllib2.urlopen("http://www.abc.com/messages.php?action=send",
        encoded_data)
print content.readlines()

einfach ersetzen http://www.abc.com/messages.php?action=send mit der URL, unter der Ihr Formular gesendet wird

Antworten Sie auf Ihren Kommentar: Wenn die URL die URL ist, auf der sich Ihr Formular befindet, und Sie dies nur für eine Website tun müssen, sehen Sie sich den Quellcode der Seite an und finden Sie ihn

<form method="POST" action="some_address.php">

und setzen Sie diese Adresse als Parameter für urllib2.urlopen

Und man muss was erkennen submit Knopf tut. Senden Sie einfach eine Http Anfrage an die von definierte URL action in der Form. Sie simulieren also diese Anfrage mit urllib2

  • Hoppla, tut mir leid. Es ist die Seite, auf der sich das Formular befindet. (Fortsetzung im nächsten Kommentar dank meines dummen iPod)

    – Matthew

    19. Dezember 2011 um 12:04 Uhr


  • (Fortsetzung) Danke! Das sieht so aus, als würde es funktionieren. Ich werde es morgen früh versuchen – wird das Formular damit auch abgeschickt oder muss ich etwas in die Datenliste für “absenden” eintragen?

    – Matthew

    19. Dezember 2011 um 12:05 Uhr

Sie können mechanisieren, um damit einfach zu arbeiten. Dies erleichtert Ihnen die Arbeit beim Absenden des Formulars. Vergessen Sie nicht, die Parameter wie Name, Titel, Nachricht zu überprüfen, indem Sie sich den Quellcode des HTML-Formulars ansehen.

import mechanize
br = mechanize.Browser()
br.open("http://mywebsite.com/messages.php?action=send")
br.select_form(nr=0)
br.form['name'] = 'Enter your Name'
br.form['title'] = 'Enter your Title'
br.form['message'] = 'Enter your message'
req = br.submit()

Du willst die mechanisieren Bibliothek. Auf diese Weise können Sie den Prozess des Durchsuchens von Websites und des Absendens von Formularen/Verfolgen von Links einfach automatisieren. Die Seite, auf die ich verlinkt habe, enthält recht gute Beispiele und Dokumentationen.

  • 😀 Ich habe es jetzt installiert, ich werde damit herumspielen! Danke: D

    – Matthew

    20. Dezember 2011 um 2:32 Uhr

  • Ich erhalte diesen Fehler, wenn ich versuche, mechanize zu importieren: Traceback (letzter Aufruf zuletzt): Datei ““, Zeile 1, in import mechanize File “C:\Users\Admin\Desktop\WinPython -64bit-3.6.1.0Qt5\python-3.6.1.amd64\lib\site-packages\mechanize_drin_.py”, Zeile 119, in aus _version import Ausführung ModuleNotFoundError: Kein Modul namens „_version“

    – Mädchen101

    15. März 2018 um 10:23 Uhr

Versuchen Sie, die gestellten Anfragen zu erarbeiten (z. B. mit dem Webentwicklertool Chrome oder mit Firefox/Firebug) und ahmen Sie die POST-Anfrage mit den gewünschten Formulardaten nach.

Zusätzlich zu der von Andrew erwähnten großartigen mechanisierten Bibliothek würde ich Ihnen auch vorschlagen, sie zu verwenden Schöne Suppe um den HTML-Code zu parsen.

Wenn Sie keine Mechanisierung verwenden möchten, aber dennoch eine einfache, saubere Lösung zum Erstellen von HTTP-Anforderungen suchen, empfehle ich das Excellend Anfragen Modul.

Um Daten auf der Webseite zu posten, verwenden Sie cURL in etwa so,

curl -d Name="Shrimant" -d title="Hello world" -d message="Hello, how are you" -d Form_Submit="Send" http://www.example.com/messages.php?action=send

Die Option „-d“ teilt cURL mit, dass das nächste Element einige Daten sind, die an den Server gesendet werden sollen http://www.example.com/messages.php?action=send

1448030cookie-checkVerwenden Sie Python, um sich bei der Website anzumelden, füllen Sie ein Formular aus und melden Sie sich dann ab

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy