Um den Mozilla Firefox -Webbrowser von Selen aus zu steuern, müssen Sie den Gecko -Web -Treiber verwenden.
In diesem Artikel werde ich Ihnen zeigen, wie Sie Selenium zum Ausführen von Browser -Tests, Webautomation und Web -Scraping -Aufgaben mit dem Mozilla Firefox -Webbrowser einrichten. Also lasst uns anfangen.
Voraussetzungen:
Um die Befehle und Beispiele dieses Artikels auszuprobieren, müssen Sie 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) Mozilla Firefox auf Ihrem Computer installiert.
Sie können viele Artikel zu diesen Themen unter LinuxHint finden.com. Schauen Sie sich sie an, wenn Sie Hilfe benötigen.
Vorbereitung der virtuellen Umgebung von Python 3 für das Projekt:
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 installiert, nicht global.
Python virtualenv Das Modul wird verwendet, um virtuelle Python -Umgebungen zu verwalten.
Sie können Python installieren virtualenv Modul weltweit mit PIP 3 wie folgt:
$ sudo pip3 install virtualenvPython virtualenv sollte installiert werden.
Erstellen Sie ein Projektverzeichnis seleniumfirefox/ In Ihrem aktuellen Arbeitsverzeichnis wie folgt:
$ mkdir -pv selenium -firefox/treiberNavigieren Sie zu Ihrem neu erstellten Projektverzeichnis seleniumfirefox/ folgendermaßen:
$ cd selen-firefox/Erstellen Sie eine virtuelle Python -Umgebung in Ihrem Projektverzeichnis mit dem folgenden Befehl:
$ virtualenv .VenvDie virtuelle Python -Umgebung sollte in Ihrem Projektverzeichnis erstellt werden.
Aktivieren Sie die virtuelle Python -Umgebung aus Ihrem Projektverzeichnis mit dem folgenden Befehl:
$ Quelle .env/bin/aktivierenInstallation von Selenium Python Library:
Die Selenium Library ist im offiziellen Python Pypi -Repository erhältlich.
Sie können die Selenium -Python -Bibliothek mit PIP 3 wie folgt installieren:
$ pip3 Selen installierenDie Selenium -Python -Bibliothek sollte installiert werden.
Installation von Firefox Gecko -Treiber:
Um den Firefox Gecko -Treiber herunterzuladen.
Wie Sie sehen können, v0.26.0 ist die neueste Version des Firefox Gecko -Treibers zum Zeitpunkt dieses Schreibens.
Um den Firefox Gecko -Treiber herunterzuladen, scrollen Sie ein wenig nach unten und klicken Sie auf den Linux Geckodriver Tar.GZ -Archiv je nach Architektur Ihrer Betriebssystem.
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.
Ich werde die 64-Bit-Version des Firefox Gecko-Treibers herunterladen.
Ihr Browser sollte Sie auffordern, das Archiv zu speichern. Wählen Datei speichern und klicken Sie auf OK.
Der Firefox Gecko -Treiber sollte heruntergeladen werden.
Das Firefox Gecko -Treiberarchiv sollte in der heruntergeladen werden ~/Downloads Verzeichnis.
Sie können die extrahieren Geckodriver-V0.26.0-linux64.Teer.gz Archiv aus dem ~/Downloads Verzeichnis zum Treiber/ Verzeichnis Ihres Projekts mit dem folgenden Befehl:
$ tar -xzf ~/downloads/Geckodriver -v0.26.0-linux64.Teer.GZ -C -Treiber/Sobald das Firefox Gecko -Treiberarchiv extrahiert wurde, ist eine neue Binärdatei Geckodriver sollte in der erstellt werden Treiber/ Verzeichnis Ihres Projekts, wie Sie im Screenshot unten sehen können.
Erste Schritte mit Selen mit Firefox Gecko -Treiber:
In diesem Abschnitt werde ich Ihnen zeigen, wie Sie Ihr erstes Selenium Python -Skript einrichten, um zu testen, ob der Firefox Gecko -Treiber funktioniert.
Erstellen Sie zunächst ein neues Python -Skript Ex00.py In Ihrem Projektverzeichnis und in die folgenden Zeilen eingeben.
vom Selenium importieren WebdriverSobald Sie fertig sind, sparen Sie Ex00.py Python -Skript.
Zeile 1 und 2 importieren alle erforderlichen Komponenten aus dem Selen Python Library.
Zeile 4 erstellt ein Firefox -Web -Treiberobjekt mit dem Webdriver.Feuerfuchs() Methode und speichert es in a Browser Variable. Der Executable_Path Das Argument wird verwendet, um dem Web -Treiber mitzuteilen, wo er nach dem Firefox Gecko -Treiber binary suchen soll. In diesem Fall die Geckodriver binär von der Treiber/ Projektverzeichnis.
In Zeile 6, Browser.erhalten() Methode lädt LinuxHint.com In einem Firefox -Webbrowser.
Sobald die Website geladen ist, druckt Zeile 7 hier den Titel der Website, hier, Browser.Titel Immobilie wird verwendet, um auf den Titel der Website zuzugreifen.
Zeile 8 schließt den Firefox -Webbrowser mit dem Browser.aufhören() Methode.
Sie können das Python -Skript ausführen Ex00.py mit dem folgenden Befehl:
$ python3 ex00.pySelenium sollte einen Firefox -Webbrowser eröffnen und die LinuxHint besuchen.COM -Website automatisch.
Sobald die Seite geladen wird, sollte sie den Website -Titel auf der Konsole drucken, und der Webbrowser sollte automatisch geschlossen werden.
Also arbeitet Selen korrekt mit dem Firefox Gecko -Treiber zusammen.
Beispiel 01: Mit Selenium im Kopflosenmodus Firefox ausführen
Sie können auch Selen mit Firefox Gecko -Treiber im kopflosen Modus laufen lassen. Selenium Firefox Headless -Modus erfordert keine grafische Benutzeroberfläche, die auf Ihrem Computer installiert ist. Sie können also Selenium Firefox auf allen linux -Kopflosen -Servern laufen lassen.
Erstellen Sie zunächst ein neues Python -Skript Ex01.py In Ihrem Projektverzeichnis und in die folgenden Codes -Zeilen eingeben.
vom Selenium importieren WebdriverSobald Sie fertig sind, speichern Sie die Ex01.py Python -Skript.
Zeile 1 und Zeile 3 sind die gleichen wie Zeile 1 und Zeile 2 von Ex00.py Python -Skript.
Zeile 2 importiert Firefox Optionen von dem Selen Bibliothek.
Zeile 5 erstellt ein Firefox -Optionsobjekt und speichert es in der Firefoxoptionen Variable.
Zeile 6 verwendet die Firefoxoptionen.add_argument () Methode, um die hinzuzufügen -kopflos Firefox Command Line Flag zum Firefoxoptionen Objekt.
In Zeile 8, Optionen Argument wird verwendet, um die zu bestehen Firefoxoptionen Bei der Initialisierung des Firefox -Web -Treibers mit dem Webdriver.Feuerfuchs() Methode.
Der Rest der Zeilen der Ex01.py Skript ist das gleiche wie das Ex00.py.
Sie können das Python -Skript ausführen Ex01.py mit dem folgenden Befehl:
$ python3 ex01.pyWie Sie sehen können, der Titel der Website (LinuxHint.com) wird auf der Konsole gedruckt, ohne eine grafische Version des Firefox -Webbrowsers zu öffnen.
Wie Sie sehen können, arbeitet Selenium auch an einer kopflosen Umgebung von Ubuntu, in der ich keine grafische Benutzeroberfläche installiert habe.
Jetzt, wo Sie wissen, wie man das passt -kopflos Firefox Command Line Flag/Option mit dem Selenium Firefox Gecko-Treiber können Sie auch alle anderen Firefox-Befehlszeilenflags/-optionen übergeben.
Sie finden alle unterstützten Firefox -Befehlszeilenflags/-optionen in den Befehlszeilenoptionen - Mozilla | MDN -Seite.
Beispiel 02: Extrahieren von Lorem Ipsum mit Selen
In diesem Abschnitt werde ich Ihnen zeigen, wie Sie mit Selenium Firefox Gecko Driver grundlegendes Web -Scraping durchführen können.
Besuchen Sie zunächst die Seite Lorem Ipsum Generator vom Firefox Webbrowser. Wie Sie sehen können, hat die Seite 5 zufällige Absätze generiert. Lassen Sie uns alle generierten Text (alle 5 Absätze) aus dieser Seite extrahieren.
Bevor Sie mit dem Extrahieren von Informationen von einer Webseite beginnen, müssen Sie die HTML -Struktur des Inhalts der Webseite kennen.
Sie können die HTML -Struktur des Inhalts, den Sie extrahieren möchten, einfach mit der HTML -Struktur finden Firefox Developer Tool. Öffnen Firefox Developer Tool, Drücken Sie die rechte Maustaste (RMB) auf der Seite und klicken Sie auf Element inspizieren (q).
Firefox Developer Tool sollte geöffnet werden. Klick auf das Ikone inspizieren () wie im Screenshot unten markiert.
Schweben Sie über den ersten Absatz, wie im Screenshot unten gezeigt. Drücken Sie dann die linke Maustaste (LMB), um sie auszuwählen.
Die HTML -Struktur der Absätze sollte in der angezeigt werden Prüfen Tab der Firefox Developer Tool. Wie Sie sehen können, befinden sich die erzeugten Lorem -Ipsum -Absätze in a div Tag, das das hat Ausweis Liptum.
Um die Lorem -Ipsum -Absätze mit Selenium Firefox Gecko -Treiber zu extrahieren Ex02.py In Ihrem Projektverzeichnis und in die folgenden Codes -Zeilen eingeben.
vom Selenium importieren WebdriverSobald Sie fertig sind, speichern Sie die Ex02.py Python -Skript.
Zeile 10 lädt die Seite Lorem Ipsum Generator mit der Browser.erhalten() Methode.
Der Lorem Ipsum -Inhalt befindet sich in a div Tag mit der ID Liptum. Zeile 12 verwendet die Browser.find_element_by_id () Methode, um es auf der Webseite auszuwählen und in der zu speichern Liptum Variable.
Zeile 13 druckt den generierten Lorem Ipsum -Inhalt auf der Konsole. Hier das Text Eigenschaft wird verwendet, um auf den Inhalt der zuzugreifen div Element mit der ID Liptum.
Führen Sie nun das Python -Skript aus Ex02.py folgendermaßen:
$ python3 ex02.pyWie Sie sehen können, hat Selen den Lorem Ipsum -Inhalt der Webseite richtig extrahiert.
Ausführen des Python -Skripts Ex02.py Sie erhalten Ihnen erneut eine andere Ausgabe, wie Sie im Screenshot unten sehen können.
Beispiel 03: Extrahieren von Listendaten mit Selenium
In diesem Abschnitt zeige ich Ihnen ein Beispiel für Webabschrott -Listendaten von einer Website, die den Selenium Firefox Gecko -Treiber im Kopflosenmodus verwenden.
Besuchen Sie zunächst den Random-Namen-Generator.Informationen aus dem Firefox -Webbrowser. Diese Website generiert 10 zufällige Namen, wenn Sie die Seite neu laden, wie Sie im Screenshot unten sehen können. Unser Ziel ist es, diese zufälligen Namen mit Selen in kopflosem Modus zu extrahieren.
Um die HTML -Struktur der Liste zu finden, müssen Sie die öffnen Firefox Developer Tool. Drücken Sie dazu die rechte Maustaste (RMB) auf der Seite und klicken Sie auf Element inspizieren (q).
Firefox Developer Tool sollte geöffnet werden. Klick auf das Ikone inspizieren () wie im Screenshot unten markiert.
Dann schweben Sie über die Liste von Zufällige Namen. Die Liste sollte als markiert im Screenshot unten hervorgehoben werden. Drücken Sie dann die linke Maustaste (LMB), um die Liste auszuwählen.
Der HTML -Code der Liste sollte in der hervorgehoben werden Inspektor Tab der Firefox Developer Tool. Hier befindet sich die Liste der zufälligen Namen in a div Element. Der div Element hat das Klasse Name Ergebnisse. Darin haben wir eine ol Element mit dem Klasse Name Namensliste. In der ol Element, jeder der Namen ist in a li Element.
Daraus können wir das sagen, um zum zu gelangen li Tags müssen wir folgen div.Ergebnisse> ol.Namelist> li
Unser CSS -Selektor wird also sein div.Ergebnisse ol.Namelist Li (Ersetzen Sie einfach das > Zeichen mit Whitespace)
Erstellen Sie zum Extrahieren dieser zufälligen Namen ein neues Python -Skript Ex03.py und geben Sie die folgenden Codes -Zeilen darin ein.
vom Selenium importieren WebdriverSobald Sie fertig sind, speichern Sie die Ex03.py Python -Skript.
Zeile 10 lädt die Website des zufälligen Namensgenerators mit dem Browser.erhalten() Methode.
Zeile 11 wählt die Namensliste mit dem aus Browser.find_elements_by_css_selector () Methode. Diese Methode verwendet den CSS -Selektor div.Ergebnisse ol.Namelist Li Um die Namensliste zu finden. Dann wird die Namensliste in der gespeichert Namensliste Variable.
In den Zeilen 13 und 14 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.
Führen Sie nun das Python -Skript aus Ex03.py folgendermaßen:
$ python3 ex03.pyWie Sie sehen können, das Python -Skript Ex03.py hat alle zufälligen Namen von der Webseite abgerufen.
Wenn Sie das Skript ein zweites Mal ausführen, sollte es eine neue Liste zufälliger Namen zurückgeben, wie Sie im Screenshot unten sehen können.
Abschluss:
Dieser Artikel sollte Ihnen helfen, mit Selenium mit dem Firefox -Webbrowser zu beginnen. Sie sollten in der Lage sein, ein Selenium Firefox Gecko -Treiberprojekt ziemlich einfach einzurichten und Ihre Browser -Tests, Webautomation und Web -Scraping -Aufgaben auszuführen.