Python Web Scraping - Formularbasierte Websites
Im vorherigen Kapitel haben wir das Scrapen dynamischer Websites gesehen. Lassen Sie uns in diesem Kapitel das Scraping von Websites verstehen, die mit benutzerbasierten Eingaben arbeiten, dh formularbasierten Websites.
Einführung
In diesen Tagen bewegt sich das WWW (World Wide Web) in Richtung sozialer Medien sowie benutzergenerierter Inhalte. Es stellt sich also die Frage, wie wir auf solche Informationen zugreifen können, die über den Anmeldebildschirm hinausgehen. Dazu müssen wir uns mit Formularen und Logins befassen.
In den vorherigen Kapiteln haben wir mit der HTTP-GET-Methode gearbeitet, um Informationen anzufordern. In diesem Kapitel werden wir jedoch mit der HTTP-POST-Methode arbeiten, mit der Informationen zur Speicherung und Analyse an einen Webserver übertragen werden.
Interaktion mit Anmeldeformularen
Während Sie im Internet arbeiten, müssen Sie viele Male mit Anmeldeformularen interagiert haben. Sie können sehr einfach sein, z. B. nur wenige HTML-Felder, eine Schaltfläche zum Senden und eine Aktionsseite, oder sie können kompliziert sein und einige zusätzliche Felder wie E-Mail enthalten. Hinterlassen Sie aus Sicherheitsgründen eine Nachricht zusammen mit Captcha.
In diesem Abschnitt werden wir uns mit einem einfachen Übermittlungsformular mit Hilfe der Python-Anforderungsbibliothek befassen.
Zuerst müssen wir die Anforderungsbibliothek wie folgt importieren:
import requests
Jetzt müssen wir die Informationen für die Felder des Anmeldeformulars bereitstellen.
parameters = {‘Name’:’Enter your name’, ‘Email-id’:’Your Emailid’,’Message’:’Type your message here’}
In der nächsten Codezeile müssen wir die URL angeben, unter der die Aktion des Formulars stattfinden würde.
r = requests.post(“enter the URL”, data = parameters)
print(r.text)
Nach dem Ausführen des Skripts wird der Inhalt der Seite zurückgegeben, auf der die Aktion ausgeführt wurde.
Angenommen, Sie möchten ein Bild mit dem Formular senden, dann ist es mit request.post () sehr einfach. Sie können es mit Hilfe des folgenden Python-Skripts verstehen -
import requests
file = {‘Uploadfile’: open(’C:\Usres\desktop\123.png’,‘rb’)}
r = requests.post(“enter the URL”, files = file)
print(r.text)
Laden von Cookies vom Webserver
Ein Cookie, manchmal auch als Web-Cookie oder Internet-Cookie bezeichnet, ist ein kleines Datenelement, das von einer Website gesendet wird und von unserem Computer in einer Datei in unserem Webbrowser gespeichert wird.
Im Zusammenhang mit dem Umgang mit Anmeldeformularen gibt es zwei Arten von Cookies. Zum einen haben wir uns im vorherigen Abschnitt mit der Übermittlung von Informationen an eine Website befasst und zum anderen können wir während unseres gesamten Besuchs auf der Website in einem permanenten „angemeldeten“ Zustand bleiben. Bei der zweiten Art von Formularen verwenden Websites Cookies, um zu verfolgen, wer angemeldet ist und wer nicht.
Was machen Cookies?
Heutzutage verwenden die meisten Websites Cookies zur Verfolgung. Wir können die Funktionsweise von Cookies anhand der folgenden Schritte verstehen:
Step 1- Zunächst authentifiziert die Site unsere Anmeldeinformationen und speichert sie im Cookie unseres Browsers. Dieses Cookie enthält im Allgemeinen vom Server generierte Token-, Timeout- und Tracking-Informationen.
Step 2- Als Nächstes verwendet die Website das Cookie als Authentifizierungsnachweis. Diese Authentifizierung wird immer angezeigt, wenn wir die Website besuchen.
Cookies sind für Web-Scraper sehr problematisch, da das übermittelte Formular zurückgesendet wird, wenn Web-Scraper die Cookies nicht verfolgen. Auf der nächsten Seite scheint es, dass sie sich nie angemeldet haben. Es ist sehr einfach, die Cookies mithilfe von zu verfolgen Python requests Bibliothek, wie unten gezeigt -
import requests
parameters = {‘Name’:’Enter your name’, ‘Email-id’:’Your Emailid’,’Message’:’Type your message here’}
r = requests.post(“enter the URL”, data = parameters)
In der obigen Codezeile ist die URL die Seite, die als Prozessor für das Anmeldeformular fungiert.
print(‘The cookie is:’)
print(r.cookies.get_dict())
print(r.text)
Nach dem Ausführen des obigen Skripts werden die Cookies aus dem Ergebnis der letzten Anforderung abgerufen.
Es gibt ein weiteres Problem mit Cookies, bei dem Websites Cookies manchmal häufig ohne Vorwarnung ändern. Eine solche Situation kann behandelt werdenrequests.Session() wie folgt -
import requests
session = requests.Session()
parameters = {‘Name’:’Enter your name’, ‘Email-id’:’Your Emailid’,’Message’:’Type your message here’}
r = session.post(“enter the URL”, data = parameters)
In der obigen Codezeile ist die URL die Seite, die als Prozessor für das Anmeldeformular fungiert.
print(‘The cookie is:’)
print(r.cookies.get_dict())
print(r.text)
Beachten Sie, dass Sie den Unterschied zwischen Skript mit und ohne Sitzung leicht verstehen können.
Formulare mit Python automatisieren
In diesem Abschnitt beschäftigen wir uns mit einem Python-Modul namens Mechanize, das unsere Arbeit reduziert und das Ausfüllen von Formularen automatisiert.
Modul mechanisieren
Das Mechanize-Modul bietet uns eine übergeordnete Schnittstelle für die Interaktion mit Formularen. Bevor wir es verwenden können, müssen wir es mit dem folgenden Befehl installieren:
pip install mechanize
Beachten Sie, dass dies nur in Python 2.x funktioniert.
Beispiel
In diesem Beispiel werden wir das Ausfüllen eines Anmeldeformulars mit zwei Feldern, nämlich E-Mail und Passwort, automatisieren.
import mechanize
brwsr = mechanize.Browser()
brwsr.open(Enter the URL of login)
brwsr.select_form(nr = 0)
brwsr['email'] = ‘Enter email’
brwsr['password'] = ‘Enter password’
response = brwsr.submit()
brwsr.submit()
Der obige Code ist sehr einfach zu verstehen. Zuerst haben wir das Mechanisierungsmodul importiert. Anschließend wurde ein Mechanize-Browserobjekt erstellt. Dann haben wir zur Anmelde-URL navigiert und das Formular ausgewählt. Danach werden Namen und Werte direkt an das Browserobjekt übergeben.