In diesem Artikel wird angezeigt, wie Sie Selenium auf Ihrer Linux -Verteilung einrichten (i.e., Ubuntu) sowie die Ausführung grundlegender Webautomation und Web -Schrott mit der Selenium Python 3 -Bibliothek.
Voraussetzungen
Um die in diesem Artikel verwendeten Befehle und Beispiele auszuprobieren, müssen Sie Folgendes haben:
1) Eine Linux -Verteilung (vorzugsweise Ubuntu), die auf Ihrem Computer installiert ist.
2) Python 3 auf Ihrem Computer installiert.
3) PIP 3 auf Ihrem Computer installiert.
4) Der auf Ihrem Computer installierte Google Chrome- oder Firefox -Webbrowser, der installiert ist.
Sie können viele Artikel zu diesen Themen unter LinuxHint finden.com. Überprüfen Sie diese Artikel unbedingt, wenn Sie weitere Unterstützung benötigen.
Vorbereitung der virtuellen Umgebung für das Projekt Python 3
Die virtuelle Python -Umgebung wird verwendet, um ein isoliertes Python -Projektverzeichnis zu erstellen. Die Python -Module, die Sie mit PIP installieren, werden nur im Projektverzeichnis und nicht global installiert.
Die Python virtualenv Das Modul wird verwendet, um virtuelle Python -Umgebungen zu verwalten.
Sie können den Python installieren virtualenv Modul weltweit mit PIP 3 wie folgt:
$ sudo pip3 install virtualenvPIP3 wird alle erforderlichen Module herunterladen und global installieren.
Zu diesem Zeitpunkt der Python virtualenv Modul sollte weltweit installiert werden.
Erstellen Sie das Projektverzeichnis Python-Selenium-Basic/ In Ihrem aktuellen Arbeitsverzeichnis wie folgt:
$ mkdir -pv python-selenium-basic/treiberNavigieren Sie zu Ihrem neu erstellten Projektverzeichnis Python-Selenium-Basic/, folgendermaßen:
$ cd python-selenium-basic/Erstellen Sie eine virtuelle Python -Umgebung in Ihrem Projektverzeichnis mit dem folgenden Befehl:
$ virtualenv .envDie virtuelle Python -Umgebung sollte nun in Ihrem Projektverzeichnis erstellt werden.''
Aktivieren Sie die virtuelle Python -Umgebung in Ihrem Projektverzeichnis über den folgenden Befehl:
$ Quelle .env/bin/aktivierenWie Sie sehen können, wird die virtuelle Python -Umgebung für dieses Projektverzeichnis aktiviert.
Installation der Selenium -Python -Bibliothek
Die Selenium Python Library ist im offiziellen Python Pypi -Repository erhältlich.
Sie können diese Bibliothek wie folgt mit PIP 3 installieren:
$ pip3 Selen installierenDie Selenium Python -Bibliothek sollte nun installiert werden.
Nachdem die Selenium Python Library installiert ist, müssen Sie als nächstes einen Webtreiber für Ihren bevorzugten Webbrowser installieren. In diesem Artikel werde ich Ihnen zeigen, wie Sie die Firefox- und Chrome -Web -Treiber für Selen installieren.
Installieren Sie den Firefox Gecko -Treiber
Mit dem Firefox Gecko -Treiber können Sie den Firefox -Webbrowser mit Selen steuern oder automatisieren.
Um den Firefox Gecko -Treiber herunterzuladen.
Wie Sie sehen können, v0.26.0 ist die neueste Version des Firefox -Gecko -Treibers zum Zeitpunkt, als dieser Artikel geschrieben wurde.
Um den Firefox Gecko -Treiber herunterzuladen, scrollen Sie ein wenig nach unten und klicken Sie auf den Linux Geckodriver Tar.Das GZ -Archiv, abhängig von Ihrer Betriebssystemarchitektur.
Wenn Sie ein 32-Bit-Betriebssystem verwenden, klicken Sie auf die Geckodriver-V0.26.0-linux32.Teer.gz Verknüpfung.
Wenn Sie ein 64-Bit-Betriebssystem verwenden, klicken Sie auf die Geckodriver-V0.26.0-linuxx64.Teer.gz Verknüpfung.
In meinem Fall werde ich die 64-Bit-Version des Firefox Gecko-Treibers herunterladen.
Ihr Browser sollte Sie auffordern, das Archiv zu speichern. Wählen Datei speichern Und dann klicken Sie OK.
Das Firefox Gecko -Treiberarchiv sollte in der heruntergeladen werden ~/Downloads Verzeichnis.
Extrahieren Sie die Geckodriver-V0.26.0-linux64.Teer.gz Archiv aus dem ~/Downloads Verzeichnis zum Treiber/ Verzeichnis Ihres Projekts durch Eingabe des folgenden Befehls:
$ tar -xzf ~/downloads/Geckodriver -v0.26.0-linux64.Teer.GZ -C -Treiber/
Sobald das Firefox Gecko -Treiberarchiv extrahiert wurde, ist ein neues Geckodriver Binärdatei sollte in der erstellt werden Treiber/ Verzeichnis Ihres Projekts, wie Sie im Screenshot unten sehen können.
Testen von Selen Firefox Gecko Treiber
In diesem Abschnitt werde ich Ihnen zeigen.
Öffnen Sie zunächst das Projektverzeichnis Python-Selenium-Basic/ Mit Ihrer Lieblings -IDE oder Ihrem Lieblingsredakteur. In diesem Artikel werde ich Visual Studio Code verwenden.
Erstellen Sie das neue Python -Skript Ex01.py, und geben Sie die folgenden Zeilen in das Skript ein.
vom Selenium importieren WebdriverSobald Sie fertig sind, speichern Sie die Ex01.py Python -Skript.
Ich werde den Code in einem späteren Abschnitt dieses Artikels erläutern.
Die folgende Zeile konfiguriert Selenium so, dass sie den Firefox Gecko -Treiber von der verwenden Treiber/ Verzeichnis Ihres Projekts.
Um zu testen, ob der Firefox Gecko -Treiber mit Selen arbeitet, laufen Sie Folgendes durch Ex01.py Python -Skript:
$ python3 ex01.pyDer Firefox -Webbrowser sollte Google automatisch besuchen.com und schließen sich nach 5 Sekunden. In diesem Fall funktioniert der Selenium Firefox Gecko -Treiber richtig.
Installieren Sie den Chrome -Web -Treiber
Mit dem Chrome -Web -Treiber können Sie den Google Chrome -Webbrowser mit Selen steuern oder automatisieren.
Sie müssen dieselbe Version des Chrome -Web -Treibers wie der Ihres Google Chrome -Webbrowsers herunterladen.
Um die Versionsnummer Ihres Google Chrome -Webbrowsers zu finden, besuchen Sie Chrome: // Einstellungen/Hilfe in Google Chrome. Die Versionsnummer sollte in der sein Über Chrom Abschnitt, wie Sie im Screenshot unten sehen können.
In meinem Fall ist die Versionsnummer 83.0.4103.116. Die ersten drei Teile der Versionsnummer (83.0.4103, in meinem Fall) müssen mit den ersten drei Teilen der Chrome -Web -Treiber -Versionsnummer übereinstimmen.
Um den Chrome -Web -Treiber herunterzuladen, besuchen Sie die offizielle Chrome -Treiber -Download -Seite.
Im Aktuelle Veröffentlichungen Abschnitt, der Chrome -Web -Treiber für die aktuellsten Veröffentlichungen des Google Chrome -Webbrowsers ist verfügbar, wie Sie im folgenden Screenshot sehen können.
Wenn die Version von Google Chrome, die Sie verwenden, nicht in der Aktuelle Veröffentlichungen Abschnitt, scrollen Sie ein wenig nach unten, und Sie sollten Ihre gewünschte Version finden.
Sobald Sie auf die richtige Chrome -Web -Treiber -Version klicken, sollten Sie zur folgenden Seite gelangen. Klick auf das chromedriver_linux64.Reißverschluss Link, wie im Screenshot unten erwähnt.
Das Chrome -Web -Treiber -Archiv sollte jetzt heruntergeladen werden.
Das Archiv von Chrome Web Driver sollte jetzt in der heruntergeladen werden ~/Downloads Verzeichnis.
Sie können die extrahieren Chromedriver-Linux64.Reißverschluss Archiv aus dem ~/Downloads Verzeichnis zum Treiber/ Verzeichnis Ihres Projekts mit dem folgenden Befehl:
$ unzip ~/downloads/chromedriver_linux64.ZIP -D -Treiber/Sobald das Archiv des Chrome -Web -Treibers extrahiert wurde, ist eine neue Chromedriver Binärdatei sollte in der erstellt werden Treiber/ Verzeichnis Ihres Projekts, wie Sie im Screenshot unten sehen können.
Testen von Selen -Chrome -Web -Treiber
In diesem Abschnitt werde ich Ihnen zeigen.
Erstellen Sie zunächst das neue Python -Skript Ex02.py, und geben Sie die folgenden Codes -Zeilen in das Skript ein.
vom Selenium importieren WebdriverSobald Sie fertig sind, speichern Sie die Ex02.py Python -Skript.
Ich werde den Code in einem späteren Abschnitt dieses Artikels erläutern.
Die folgende Zeile konfiguriert Selenium, um den Chrome -Web -Treiber aus dem zu verwenden Treiber/ Verzeichnis Ihres Projekts.
Um zu testen, ob der Chrome -Web -Treiber mit Selen arbeitet, führen Sie die aus Ex02.py Python -Skript wie folgt:
$ python3 ex01.pyDer Google Chrome -Webbrowser sollte automatisch Google besuchen.com und schließen sich nach 5 Sekunden. In diesem Fall funktioniert der Selenium Firefox Gecko -Treiber richtig.
Grundlagen des Webkratzens mit Selen
Ich werde von nun an den Firefox -Webbrowser verwenden. Sie können auch Chrome verwenden, wenn Sie möchten.
Ein grundlegendes Selenium -Python -Skript sollte wie das Skript im Screenshot unten aussehen.
Importieren Sie zunächst das Selen Webdriver von dem Selen Modul.
Importieren Sie als nächstes die Schlüssel aus Selen.Webdriver.gemeinsam.Schlüssel. Auf diese Weise können Sie Tastaturdrücke an den Browser senden, den Sie von Selen automatisieren.
Die folgende Zeile erstellt a Browser Objekt für den Firefox -Webbrowser mit dem Firefox Gecko -Treiber (Webdriver). Sie können Firefox -Browser -Aktionen mit diesem Objekt steuern.
So laden Sie eine Website oder URL (ich lade die Website https: // www.Duckduckgo.com), rufen Sie die an erhalten() Methode der Browser Objekt auf Ihren Firefox -Browser.
Mit Selen können Sie Ihre Tests schreiben, Web -Scraping durchführen und schließlich den Browser mit dem schließen aufhören() Methode der Browser Objekt.
Oben ist das grundlegende Layout eines Selenium -Python -Skripts. Sie werden diese Zeilen in all Ihren Selenium -Python -Skripten schreiben.
Beispiel 1: Drucken des Titels einer Webseite
Dies wird das einfachste Beispiel sein, das mit Selenium diskutiert wird. In diesem Beispiel werden wir den Titel der Webseite drucken, die wir besuchen werden.
Erstellen Sie die neue Datei Ex04.py und geben Sie die folgenden Codes -Zeilen darin ein.
vom Selenium importieren WebdriverSobald Sie fertig sind, speichern Sie die Datei.
Hier das Browser.Titel wird verwendet, um auf den Titel der besuchten Webseite und der besuchten Webseite zuzugreifen drucken() Die Funktion wird verwendet, um den Titel in der Konsole zu drucken.
Nach dem Laufen der Ex04.py Skript, es sollte:
1) Firefox öffnen
2) Laden Sie Ihre gewünschte Webseite
3) Rufen Sie den Titel der Seite ab
4) Drucken Sie den Titel auf der Konsole
5) und schließlich schließen Sie den Browser
Wie Sie sehen können, die Ex04.py Das Skript hat den Titel der Webseite in der Konsole gut gedruckt.
$ python3 ex04.pyBeispiel 2: Drucken der Titel mehrerer Webseiten drucken
Wie im vorherigen Beispiel können Sie dieselbe Methode verwenden, um den Titel mehrerer Webseiten mit der Python -Schleife zu drucken.
Um zu verstehen, wie dies funktioniert, erstellen Sie das neue Python -Skript Ex05.py und geben Sie die folgenden Codezeilen in das Skript ein:
vom Selenium importieren WebdriverSobald Sie fertig sind, speichern Sie das Python -Skript Ex05.py.
Hier das URLs List hält die URL jeder Webseite.
A für Schleife wird verwendet, um durch die zu iterieren URLs Elemente auflisten.
Bei jeder Iteration fordert Selen den Browser an, das zu besuchen URL und holen Sie sich den Titel der Webseite. Sobald Selen den Titel der Webseite extrahiert hat, wird es in der Konsole gedruckt.
Führen Sie das Python -Skript aus Ex05.py, und Sie sollten den Titel jeder Webseite in der sehen URLs Liste.
$ python3 ex05.pyDies ist ein Beispiel dafür, wie Selenium dieselbe Aufgabe mit mehreren Webseiten oder Websites ausführen kann.
Beispiel 3: Daten extrahieren Daten aus einer Webseite
In diesem Beispiel werde ich Ihnen die Grundlagen des Extrahierens von Daten von Webseiten mit Selen zeigen. Dies ist auch als Web -Scraping bekannt.
Besuchen Sie zunächst die zufälligen.Org -Verbindung von Firefox. Die Seite sollte eine zufällige Zeichenfolge generieren, wie Sie im Screenshot unten sehen können.
Um die Zufallszeichendaten mit Selenium zu extrahieren, müssen Sie auch die HTML -Darstellung der Daten kennen.
Um zu sehen, wie die zufälligen Zeichenfolgedaten in HTML dargestellt werden Element inspizieren (q), Wie im Screenshot unten erwähnt.
Die HTML -Darstellung der Daten sollte in der angezeigt werden Inspektor Registerkarte, wie Sie im Screenshot unten sehen können.
Sie können auch auf die klicken Ikone inspizieren ( ) Um die Daten von der Seite zu inspizieren.
Klicken Sie auf das Symbol inspizieren () und schweben Sie über die zufälligen Zeichenfolgedaten, die Sie extrahieren möchten. Die HTML -Darstellung der Daten sollte wie zuvor angezeigt werden.
Wie Sie sehen können, sind die zufälligen String -Daten in ein HTML eingewickelt Vor Tag und enthält die Klasse Daten.
Nachdem wir die HTML -Darstellung der Daten kennen, die wir extrahieren möchten, werden wir ein Python -Skript erstellen, um die Daten mit Selen zu extrahieren.
Erstellen Sie das neue Python -Skript Ex06.py und geben Sie die folgenden Codes -Zeilen in das Skript ein
vom Selenium importieren WebdriverSobald Sie fertig sind, speichern Sie die Ex06.py Python -Skript.
Hier das Browser.erhalten() Die Methode lädt die Webseite im Firefox -Browser.
Der Browser.find_element_by_css_selector () Die Methode durchsucht den HTML -Code der Seite nach spezifischem Element und gibt es zurück.
In diesem Fall wäre das Element sein Vor.Daten, Die Vor Tag, das den Klassennamen hat Daten.
Unter dem Vor.Daten Element wurde in der gespeichert DatenElement Variable.
Das Skript druckt dann den Textinhalt der ausgewählten Vor.Daten Element.
Wenn Sie die ausführen Ex06.py Python -Skript sollte die zufälligen Zeichenfolgedaten aus der Webseite extrahieren, wie Sie im folgenden Screenshot sehen können.
$ python3 ex06.pyWie Sie sehen können, jedes Mal, wenn ich die leite Ex06.py Python -Skript, es extrahiert andere zufällige Zeichenfolgedaten von der Webseite.
Beispiel 4: Extrahieren von Datenliste aus der Webseite
Das vorherige Beispiel hat Ihnen gezeigt, wie Sie mit Selen ein einzelnes Datenelement aus einer Webseite extrahieren können. In diesem Beispiel werde ich Ihnen zeigen, wie Sie Selen mithilfe von Selen eine Liste von Daten aus einer Webseite extrahieren können.
Besuchen Sie zunächst den Random-Namen-Generator.Informationen aus Ihrem Firefox -Webbrowser. Diese Website generiert jedes Mal, wenn Sie die Seite neu laden. Unser Ziel ist es, diese zufälligen Namen mit Selen zu extrahieren.
Wenn Sie die Namensliste genauer untersuchen, können Sie feststellen, dass es sich um eine bestellte Liste handelt (ol Schild). Der ol Tag enthält auch den Klassennamen Namensliste. Jeder der zufälligen Namen wird als Listenelement dargestellt (li Tag) im Inneren der ol Schild.
Um diese zufälligen Namen zu extrahieren, erstellen Sie das neue Python -Skript Ex07.py und geben Sie die folgenden Codes -Zeilen in das Skript ein.
vom Selenium importieren WebdriverSobald Sie fertig sind, speichern Sie die Ex07.py Python -Skript.
Hier das Browser.erhalten() Die Methode lädt die Webseite des Zufallsnamengenerators im Firefox -Browser.
Der Browser.find_elements_by_css_selector () Methode verwendet den CSS -Selektor ol.Namelist Li Alle finden li Elemente im Inneren der ol Tag mit dem Klassennamen Namensliste. Ich habe alle ausgewählten gespeichert li Elemente in der Namensliste Variable.
A für Schleife wird verwendet, um durch die zu iterieren Namensliste Liste von li Elemente. In jeder Iteration der Inhalt des li Element wird auf der Konsole gedruckt.
Wenn Sie die ausführen Ex07.py Python -Skript holt alle zufälligen Namen von der Webseite und druckt es auf dem Bildschirm, wie Sie im Screenshot unten sehen können.
$ python3 ex07.pyWenn Sie das Skript ein zweites Mal ausführen, sollten Sie eine neue Liste zufälliger Benutzernamen zurückgeben, wie Sie im Screenshot unten sehen können.
Beispiel 5: Formular einreichen - Suche auf DuckDuckgo
Dieses Beispiel ist genauso einfach wie das erste Beispiel. In diesem Beispiel werde ich die DuckDuckgo -Suchmaschine besuchen und den Begriff suchen Selenium HQ mit Selen.
Besuchen Sie zunächst DuckDuckgo Suchmaschine vom Firefox Webbrowser.
Wenn Sie das Feld Sucheingabeton inspizieren, sollte es die ID haben search_form_input_homepage, Wie Sie im Screenshot unten sehen können.
Erstellen Sie nun das neue Python -Skript Ex08.py und geben Sie die folgenden Codes -Zeilen in das Skript ein.
vom Selenium importieren WebdriverSobald Sie fertig sind, speichern Sie die Ex08.py Python -Skript.
Hier das Browser.erhalten() Die Methode lädt die Homepage der DuckDuckgo -Suchmaschine im Firefox -Webbrowser.
Der Browser.find_element_by_id () Die Methode wählt das Eingabeelement mit der ID aus search_form_input_homepage und speichert es in der SearchInput Variable.
Der SearchInput.send_keys () Die Methode wird verwendet, um Taste Drücken Sie Daten an das Eingabefeld zu senden. In diesem Beispiel wird die Zeichenfolge gesendet Selenium HQ, und die Eingabetaste wird mit dem gedrückt Schlüssel.EINGEBEN Konstante.
Sobald die DuckDuckgo -Suchmaschine die Eingabetaste empfängt (die Eingabetaste Press (Schlüssel.EINGEBEN), es sucht und zeigt das Ergebnis an.
Leiten Sie die Ex08.py Python -Skript wie folgt:
$ python3 ex08.pyWie Sie sehen können, besuchte der Firefox -Webbrowser die DuckDuckgo -Suchmaschine.
Es tippt automatisch Selenium HQ Im Suchtextfeld.
Sobald der Browser die Eingabetaste erhielt (Schlüssel.EINGEBEN), es wurde das Suchergebnis angezeigt.
Beispiel 6: Senden eines Formulars auf W3schools.com
In Beispiel 5 war die Einreichung von DuckDuckgo Suchmaschine Form einfach. Alles, was Sie tun mussten, war die Eingabetaste zu drücken. Dies ist jedoch bei allen Formulareinführungen nicht der Fall. In diesem Beispiel werde ich Ihnen eine komplexere Form des Formulars zeigen.
Besuchen Sie zunächst die Seite HTML Forms von W3Schools.com vom Firefox -Webbrowser. Sobald die Seite geladen wird, sollten Sie ein Beispielformular sehen. Dies ist das Formular, das wir in diesem Beispiel einreichen werden.
Wenn Sie das Formular inspizieren, die Vorname Eingabefeld sollte die ID haben fname, Die Familienname, Nachname Eingabefeld sollte die ID haben lname, und das Schaltfläche senden sollte das haben Typ einreichen, Wie Sie im Screenshot unten sehen können.
Um dieses Formular mit Selenium einzureichen, erstellen Sie das neue Python -Skript Ex09.py und geben Sie die folgenden Codes -Zeilen in das Skript ein.
vom Selenium importieren WebdriverSobald Sie fertig sind, speichern Sie die Ex09.py Python -Skript.
Hier das Browser.erhalten() Die Methode öffnet die W3Schools -HTML -Formulare -Seite im Firefox -Webbrowser.
Der Browser.find_element_by_id () Die Methode findet die Eingangsfelder nach der ID fname Und lname und es speichert sie in der fname Und lname Variablen jeweils.
Der fname.klar() Und lname.klar() Methoden löschen den Standard -Vornamen (John) fname Wert und Nachname (DOE) lname Wert aus den Eingangsfeldern.
Der fname.send_keys () Und lname.send_keys () Methoden Typ Shahriar Und Shovon im Vorname Und Familienname, Nachname Eingabefelder.
Der Browser.find_element_by_css_selector () Methode wählt die Auswahl der Schaltfläche senden der Form und speichert sie in der Submitbutton Variable.
Der Submitbutton.send_keys () Die Methode sendet die Eingabetaste (Drücken Sie die Eingabetaste (Schlüssel.EINGEBEN) zum Schaltfläche senden der Form. Diese Aktion gibt das Formular vor.
Leiten Sie die Ex09.py Python -Skript wie folgt:
$ python3 ex09.pyWie Sie sehen können, wurde das Formular automatisch mit den richtigen Eingaben eingereicht.
Abschluss
Dieser Artikel sollte Ihnen dabei helfen. Weitere Informationen finden Sie in der offiziellen Dokumentation von Selenium Python.