Selenium

Verwenden von XPath und Selenium zum Suchen eines Elements in einer HTML-Seite

Verwenden von XPath und Selenium zum Suchen eines Elements in einer HTML-Seite
XPath, auch bekannt als XML Path Language, ist eine Sprache zum Auswählen von Elementen aus einem XML-Dokument. Da HTML und XML der gleichen Dokumentstruktur folgen, kann XPath auch verwendet werden, um Elemente einer Webseite auszuwählen.

Das Auffinden und Auswählen von Elementen auf der Webseite ist der Schlüssel zum Web-Scraping mit Selenium. Zum Auffinden und Auswählen von Elementen auf der Webseite können Sie XPath-Selektoren in Selenium verwenden.

In diesem Artikel zeige ich Ihnen, wie Sie Elemente von Webseiten mithilfe von XPath-Selektoren in Selenium mit der Selenium-Python-Bibliothek finden und auswählen. Also lasst uns anfangen.

Voraussetzungen:

Um die Befehle und Beispiele dieses Artikels auszuprobieren, müssen Sie,

  1. Eine auf Ihrem Computer installierte Linux-Distribution (vorzugsweise Ubuntu).
  2. Python 3 auf Ihrem Computer installiert.
  3. PIP 3 auf Ihrem Computer installiert.
  4. Python virtuelle Umgebung Paket auf Ihrem Computer installiert.
  5. Auf Ihrem Computer installierte Webbrowser Mozilla Firefox oder Google Chrome.
  6. Muss wissen, wie man den Firefox Gecko-Treiber oder den Chrome Web-Treiber installiert install.

Um die Anforderungen 4, 5 und 6 zu erfüllen, lesen Sie meinen Artikel Einführung in Selen in Python 3. Viele Artikel zu den anderen Themen finden Sie auf LinuxHint.com. Schauen Sie sie sich an, wenn Sie Hilfe benötigen.

Einrichten eines Projektverzeichnisses:

Um alles organisiert zu halten, erstellen Sie ein neues Projektverzeichnis Selen-Xpath/ wie folgt:

$ mkdir -pv selenium-xpath/drivers

Navigieren Sie zum Selen-Xpath/ Projektverzeichnis wie folgt:

$ cd selen-xpath/

Erstellen Sie eine virtuelle Python-Umgebung im Projektverzeichnis wie folgt:

$ virtualenv .venv

Aktivieren Sie die virtuelle Umgebung wie folgt:

$ Quelle .venv/bin/aktivieren

Installieren Sie die Selenium Python-Bibliothek mit PIP3 wie folgt:

$ pip3 Selen installieren

Laden Sie alle erforderlichen Webtreiber herunter und installieren Sie sie im Fahrer/ Verzeichnis des Projekts. Den Vorgang zum Herunterladen und Installieren von Webtreibern habe ich in meinem Artikel erklärt Einführung in Selen in Python 3.

Holen Sie sich den XPath Selector mit dem Chrome Developer Tool:

In diesem Abschnitt zeige ich Ihnen, wie Sie mit dem integrierten Developer Tool des Google Chrome-Webbrowsers den XPath-Selektor des Webseitenelements finden, das Sie mit Selenium auswählen möchten.

Um den XPath-Selektor mit dem Google Chrome-Webbrowser zu erhalten, öffnen Sie Google Chrome und besuchen Sie die Website, von der Sie Daten extrahieren möchten. Drücken Sie dann die rechte Maustaste (RMB) auf einen leeren Bereich der Seite und klicken Sie auf Prüfen die öffnen Chrome-Entwicklertool.

Sie können auch drücken + Verschiebung + ich die öffnen Chrome-Entwicklertool.

Chrome-Entwicklertool sollte geöffnet werden.

Um die HTML-Darstellung Ihres gewünschten Webseitenelements zu finden, klicken Sie auf das Prüfen(

) Symbol, wie im Screenshot unten markiert.

Bewegen Sie dann den Mauszeiger über das gewünschte Webseitenelement und drücken Sie die linke Maustaste (LMB), um es auszuwählen.

Die HTML-Darstellung des von Ihnen ausgewählten Webelements wird im Elemente Registerkarte des Chrome-Entwicklertool, wie Sie im Screenshot unten sehen können.

Um den XPath-Selektor Ihres gewünschten Elements zu erhalten, wählen Sie das Element aus der Elemente Registerkarte von Chrome-Entwicklertool und Rechtsklick (RMB) darauf. Wählen Sie dann Kopieren > XPath kopieren, wie im Screenshot unten markiert.

Ich habe den XPath-Selektor in einen Texteditor eingefügt. Der XPath-Selektor sieht wie im Screenshot unten gezeigt aus.

Holen Sie sich den XPath Selector mit dem Firefox Developer Tool:

In diesem Abschnitt zeige ich Ihnen, wie Sie mit dem integrierten Developer Tool des Mozilla Firefox-Webbrowsers den XPath-Selektor des Webseitenelements finden, das Sie mit Selenium auswählen möchten.

Um den XPath-Selektor mit dem Firefox-Webbrowser zu erhalten, öffnen Sie Firefox und besuchen Sie die Website, von der Sie Daten extrahieren möchten. Drücken Sie dann die rechte Maustaste (RMB) auf einen leeren Bereich der Seite und klicken Sie auf Element prüfen (Q) die öffnen Firefox-Entwicklertool.

Firefox-Entwicklertool sollte geöffnet werden.

Um die HTML-Darstellung Ihres gewünschten Webseitenelements zu finden, klicken Sie auf das Prüfen(

) Symbol, wie im Screenshot unten markiert.

Bewegen Sie dann den Mauszeiger über das gewünschte Webseitenelement und drücken Sie die linke Maustaste (LMB), um es auszuwählen.

Die HTML-Darstellung des von Ihnen ausgewählten Webelements wird im Inspektor Registerkarte von Firefox-Entwicklertool, wie Sie im Screenshot unten sehen können.

Um den XPath-Selektor Ihres gewünschten Elements zu erhalten, wählen Sie das Element aus der Inspektor Registerkarte von Firefox-Entwicklertool und Rechtsklick (RMB) darauf. Wählen Sie dann Kopieren > XPath wie im Screenshot unten markiert.

Der XPath-Selektor Ihres gewünschten Elements sollte in etwa so aussehen.

Extrahieren von Daten aus Webseiten mit XPath Selector:

In diesem Abschnitt zeige ich Ihnen, wie Sie mit XPath-Selektoren mit der Selenium-Python-Bibliothek Webseitenelemente auswählen und Daten daraus extrahieren.

Erstellen Sie zuerst ein neues Python-Skript ex01.py und geben Sie die folgenden Codezeilen ein.

vom Selen-Import-Webtreiber
aus Selen.Webtreiber.verbreitet.Schlüsselimport Schlüssel
aus Selen.Webtreiber.verbreitet.per Import
Optionen = Webtreiber.ChromeOptions()
Optionen.kopflos = wahr
Browser = Webtreiber.Chrome(executable_path="./drivers/chromedriver",
Optionen = Optionen)
Browser.bekommen("https://www.unixtimestamp.com/")
Zeitstempel = Browser.find_element_by_xpath('/html/body/div[1]/div[1]
/div[2]/div[1]/div/div/h3[2]')
print('Aktueller Zeitstempel: %s' % (Zeitstempel.Text.split(")[0]))
Browser.schließen()

Wenn Sie fertig sind, speichern Sie die ex01.py Python-Skript.

Zeile 1-3 importiert alle benötigten Selenium-Komponenten.

Zeile 5 erstellt ein Chrome-Optionsobjekt und Zeile 6 aktiviert den Headless-Modus für den Chrome-Webbrowser.

Zeile 8 erstellt ein Chrome Browser Objekt mit dem Chromtreiber binär aus dem Fahrer/ Verzeichnis des Projekts.

Zeile 10 weist den Browser an, den Unixtimestamp der Website zu laden.com.

Zeile 12 findet das Element, das die Zeitstempeldaten von der Seite enthält, mithilfe des XPath-Selektors und speichert es im Zeitstempel Variable.

Zeile 13 parst die Zeitstempeldaten des Elements und gibt sie auf der Konsole aus.

Ich habe den XPath-Selektor des markierten . kopiert h2 Element aus unixtimestamp.com mit dem Chrome Developer Tool.

Zeile 14 schließt den Browser.

Führen Sie das Python-Skript aus ex01.py wie folgt:

$ python3 ex01.py

Wie Sie sehen, werden die Zeitstempeldaten auf dem Bildschirm gedruckt.

Hier habe ich die Browser.find_element_by_xpath(Selektor) Methode. Der einzige Parameter dieser Methode ist der Wähler, das ist der XPath-Selektor des Elements.

Anstatt von Browser.find_element_by_xpath() Methode können Sie auch verwenden Browser.find_element(Von, Selektor) Methode. Diese Methode benötigt zwei Parameter. Der erste Parameter Durch wird sein Durch.XPATH da wir den XPath-Selektor und den zweiten Parameter verwenden werden Wähler wird der XPath-Selektor selbst sein. Das Ergebnis wird das gleiche sein.

Zu sehen, wie Browser.find_element() Methode funktioniert für XPath-Selektor, erstellen Sie ein neues Python-Skript ex02.py, Kopieren Sie alle Zeilen von ex01.py zu ex02.py und ändern Linie 12 wie im Screenshot unten markiert.

Wie Sie sehen können, ist das Python-Skript ex02.py ergibt das gleiche Ergebnis wie ex01.py.

$ python3 ex02.py

Das Browser.find_element_by_xpath() und Browser.find_element() Methoden werden verwendet, um ein einzelnes Element auf Webseiten zu finden und auszuwählen. Wenn Sie mehrere Elemente mit XPath-Selektoren suchen und auswählen möchten, müssen Sie . verwenden Browser.find_elements_by_xpath() oder Browser.find_elemente() Methoden.

Das Browser.find_elements_by_xpath() -Methode nimmt das gleiche Argument an wie die Browser.find_element_by_xpath() Methode.

Das Browser.find_elemente() -Methode verwendet die gleichen Argumente wie die Browser.find_element() Methode.

Sehen wir uns ein Beispiel für das Extrahieren einer Namensliste mit dem XPath-Selektor aus an Zufallsnamen-Generator.die Info mit der Selenium Python-Bibliothek.

Die ungeordnete Liste (ol Tag) hat eine 10 li Tags in jedem enthalten einen zufälligen Namen. Der XPath zum Auswählen aller li Tags innerhalb der ol Tag ist in diesem Fall //*[@id=”main”]/div[3]/div[2]/ol//li

Sehen wir uns ein Beispiel für die Auswahl mehrerer Elemente auf der Webseite mit XPath-Selektoren an.

Erstellen Sie ein neues Python-Skript ex03.py und geben Sie die folgenden Codezeilen ein.

vom Selen-Import-Webtreiber
aus Selen.Webtreiber.verbreitet.Schlüsselimport Schlüssel
aus Selen.Webtreiber.verbreitet.per Import
Optionen = Webtreiber.ChromeOptions()
Optionen.kopflos = wahr
Browser = Webtreiber.Chrome(executable_path="./drivers/chromedriver",
Optionen = Optionen)
Browser.get("http://zufalls-name-generator.die Info/")
Namen = Browser.find_elements_by_xpath('
//*[@id="main"]/div[3]/div[2]/ol//li')
für Namen in Namen:
drucken (Name.Text)
Browser.schließen()

Wenn Sie fertig sind, speichern Sie die ex03.py Python-Skript.

Zeile 1-8 ist die gleiche wie in ex01.py Python-Skript. Also werde ich sie hier nicht noch einmal erklären.

Zeile 10 weist den Browser an, den Random-Name-Generator der Website zu laden.die Info.

Zeile 12 wählt die Namensliste mit der Browser.find_elements_by_xpath() Methode. Diese Methode verwendet den XPath-Selektor //*[@id=”main”]/div[3]/div[2]/ol//li um die Namensliste zu finden. Anschließend wird die Namensliste im Namen Variable.

In den Zeilen 13 und 14, a zum Schleife wird verwendet, um durch die Namen Liste auf und drucke die Namen auf der Konsole aus.

Zeile 16 schließt den Browser.

Führen Sie das Python-Skript aus ex03.py wie folgt:

$ python3 ex03.py

Wie Sie sehen, werden die Namen von der Webseite extrahiert und auf der Konsole gedruckt.

Anstatt die Browser.find_elements_by_xpath() Methode können Sie auch die Browser.find_elemente() Methode wie zuvor. Das erste Argument dieser Methode ist Durch.XPATH, und das zweite Argument ist der XPath-Selektor.

Zum Experimentieren mit Browser.find_elemente() Methode erstellen Sie ein neues Python-Skript ex04.py, kopiere alle Codes von ex03.py zu ex04.py, und ändern Sie Zeile 12 wie im Screenshot unten markiert.

Sie sollten das gleiche Ergebnis wie zuvor erhalten.

$ python3 ex04.py

Grundlagen des XPath-Selektors:

Das Developer Tool des Firefox- oder Google Chrome-Webbrowsers generiert den XPath-Selektor automatisch. Aber diese XPath-Selektoren reichen manchmal für Ihr Projekt nicht aus. In diesem Fall müssen Sie wissen, was ein bestimmter XPath-Selektor tut, um Ihren XPath-Selektor zu erstellen. In diesem Abschnitt zeige ich Ihnen die Grundlagen von XPath-Selektoren. Dann sollten Sie in der Lage sein, Ihren eigenen XPath-Selektor zu erstellen.

Erstellen Sie ein neues Verzeichnis www/ in Ihrem Projektverzeichnis wie folgt:

$ mkdir -v www

Erstellen Sie eine neue Datei web01.html in dem www/ Verzeichnis und geben Sie die folgenden Zeilen in diese Datei ein.






Einfaches HTML-Dokument


Hallo Welt



Wenn Sie fertig sind, speichern Sie die web01.html Datei.

Führen Sie einen einfachen HTTP-Server auf Port 8080 mit dem folgenden Befehl aus:

$ python3 -m http.Server --Verzeichnis www/8080

Der HTTP-Server sollte starten.

Sie sollten in der Lage sein, auf die web01.html Datei mit der URL http://localhost:8080/web01.html, wie Sie im Screenshot unten sehen können.

Drücken Sie bei geöffnetem Firefox- oder Chrome-Entwicklertool + F um das Suchfeld zu öffnen. Sie können Ihren XPath-Selektor hier eingeben und sehr einfach sehen, was er auswählt. Ich werde dieses Tool in diesem Abschnitt verwenden.

Ein XPath-Selektor beginnt mit a Schrägstrich (/) meistens. Es ist wie ein Linux-Verzeichnisbaum. Das / ist die Wurzel aller Elemente auf der Webseite.

Das erste Element ist das html. Also, der XPath-Selektor /html wählt das gesamte html Etikett.

Innerhalb der html Tag, wir haben ein Körper Etikett. Das Körper Tag kann mit dem XPath-Selektor ausgewählt werden /html/body

Das h1 Header ist in der Körper Etikett. Das h1 Header kann mit dem XPath-Selektor ausgewählt werden /html/body/h1

Diese Art von XPath-Selektor wird als absoluter Pfadselektor bezeichnet. In der absoluten Pfadauswahl müssen Sie die Webseite vom Stammverzeichnis (/) der Seite aus durchlaufen. Der Nachteil eines absoluten Pfadselektors besteht darin, dass selbst eine geringfügige Änderung der Webseitenstruktur Ihren XPath-Selektor ungültig machen kann. Die Lösung für dieses Problem ist ein relativer oder partieller XPath-Selektor.

Um zu sehen, wie der relative Pfad oder Teilpfad funktioniert, erstellen Sie eine neue Datei web02.html in dem www/ Verzeichnis und geben Sie die folgenden Codezeilen ein.






Einfaches HTML-Dokument


Hallo Welt



das ist eine Nachricht




Hallo Welt


Wenn Sie fertig sind, speichern Sie die web02.html Datei und laden Sie sie in Ihren Webbrowser.

Wie Sie sehen, ist der XPath-Selektor //div/p wählt die p tag in der div Etikett. Dies ist ein Beispiel für einen relativen XPath-Selektor.

Relativer XPath-Selektor beginnt mit //. Dann geben Sie die Struktur des Elements an, das Sie auswählen möchten. In diesem Fall, div/p.

So, //div/p bedeutet, wählen Sie die p Element innerhalb von a div Element, egal was davor kommt.

Sie können Elemente auch nach verschiedenen Attributen auswählen wie Ich würde, Klasse, Art, usw. mit XPath-Selektor. Mal sehen, wie das geht.

Erstellen Sie eine neue Datei web03.html in dem www/ Verzeichnis und geben Sie die folgenden Codezeilen ein.






Einfaches HTML-Dokument


Hallo Welt



das ist eine Nachricht


das ist eine andere Nachricht


Überschrift 2


Lorem ipsum dolor sit amet consectetur, adipöse Elit. Quibusdam
eligendi doloribus sapiente, molestias quos quae non nam incidunt quis delectus
facilis magni officiis alias neque atque fuga? Unde, aut natus?




das ist eine fußzeile


Wenn Sie fertig sind, speichern Sie die web03.html Datei und laden Sie sie in Ihren Webbrowser.

Angenommen, Sie möchten alle auswählen div Elemente, die die Klasse Name Behälter1. Dazu können Sie den XPath-Selektor verwenden //div[@class='container1']

Wie Sie sehen können, habe ich 2 Elemente, die dem XPath-Selektor entsprechen //div[@class='container1']

Um das erste auszuwählen div Element mit dem Klasse Name Behälter1, hinzufügen [1] am Ende des XPath auswählen, wie im Screenshot unten gezeigt.

Auf die gleiche Weise können Sie die zweite auswählen div Element mit dem Klasse Name Behälter1 mit dem XPath-Selektor //div[@class='container1'][2]

Sie können Elemente auswählen durch Ich würde auch.

Um beispielsweise das Element auszuwählen, das die Ich würde von Fußzeile-Nachricht, Sie können den XPath-Selektor verwenden //*[@id='footer-msg']

Hier die * Vor [@id='footer-msg'] wird verwendet, um jedes Element unabhängig von seinem Tag auszuwählen.

Das sind die Grundlagen des XPath-Selektors. Jetzt sollten Sie in der Lage sein, Ihren eigenen XPath-Selektor für Ihre Selenium-Projekte zu erstellen.

Fazit:

In diesem Artikel habe ich Ihnen gezeigt, wie Sie mithilfe des XPath-Selektors mit der Selenium-Python-Bibliothek Elemente von Webseiten finden und auswählen können. Ich habe auch die gängigsten XPath-Selektoren besprochen. Nachdem Sie diesen Artikel gelesen haben, sollten Sie sich bei der Auswahl von Elementen von Webseiten mit dem XPath-Selektor mit der Selenium-Python-Bibliothek ziemlich sicher fühlen.

Fügen Sie mit diesen kostenlosen Tools Mausgesten zu Windows 10 hinzu
In den letzten Jahren haben sich Computer und Betriebssysteme stark weiterentwickelt. Es gab eine Zeit, in der Benutzer Befehle verwenden mussten, um ...
Steuern und verwalten Sie Mausbewegungen zwischen mehreren Monitoren in Windows 10
Dual-Display-Maus-Manager lässt Sie die Mausbewegung zwischen mehreren Monitoren steuern und konfigurieren, indem Sie ihre Bewegungen in der Nähe der ...
Mit WinMouse können Sie die Mauszeigerbewegung auf einem Windows-PC anpassen und verbessern improve
Wenn Sie die Standardfunktionen Ihres Mauszeigers verbessern möchten, verwenden Sie Freeware WinMouse. Es fügt weitere Funktionen hinzu, damit Sie das...