Verwenden Sie XPath und Selen, um ein Element auf der HTML -Seite zu finden

Verwenden Sie XPath und Selen, um ein Element auf der HTML -Seite zu finden
XPath, auch als XML -Pfadsprache bekannt, ist eine Sprache für die Auswahl von Elementen aus einem XML -Dokument. Wenn HTML und XML dieselbe Dokumentstruktur folgen, kann XPath auch verwendet werden, um Elemente auf einer Webseite auszuwählen.

Das Suchen und Auswählen von Elementen auf der Webseite ist der Schlüssel zum Web -Scraping mit Selen. Zur Suche und Auswahl von Elementen auf der Webseite können Sie XPath -Selektoren in Selen verwenden.

In diesem Artikel werde ich Ihnen zeigen, wie Sie Elemente auf Webseiten mithilfe von XPath -Selektoren in Selen mit der Selenium -Python -Bibliothek finden und auswählen können. 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. Python virtualenv Paket auf Ihrem Computer installiert.
  5. Mozilla Firefox oder Google Chrome -Webbrowser auf Ihrem Computer installiert.
  6. Muss wissen, wie man den Firefox Gecko -Treiber oder den Chrome -Web -Treiber installiert.

Lesen Sie meinen Artikel, um die Anforderungen 4, 5 und 6 zu erfüllen Einführung in Selen in Python 3. Sie können viele Artikel zu den anderen Themen unter LinuxHint finden.com. Schauen Sie sich sie an, wenn Sie Hilfe benötigen.

Einrichten eines Projektverzeichnisses:

Um alles organisiert zu halten, erstellen Sie ein neues Projektverzeichnis Selenium-XPath/ folgendermaßen:

$ mkdir -pv selenium -xPath/Treiber

Navigieren zum Selenium-XPath/ Projektverzeichnis wie folgt:

$ cd selenium-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 Library mit PIP3 wie folgt:

$ pip3 Selen installieren

Laden Sie den gesamten erforderlichen Web -Treiber herunter und installieren Sie sie in der Treiber/ Projektverzeichnis. Ich habe den Prozess des Herunterladens und Installierens von Webtreibern in meinem Artikel erläutert Einführung in Selen in Python 3.

Holen Sie sich den XPath -Selektor mit einem Chrome -Entwickler -Tool:

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

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

Sie können auch drücken + Schicht + ICH um die zu öffnen Chrome Developer Tool.

Chrome Developer Tool sollte geöffnet werden.

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

) Symbol, wie im Screenshot unten markiert.

Drücken Sie dann ü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 in der hervorgehoben Elemente Tab der Chrome Developer Tool, Wie Sie im Screenshot unten sehen können.

Um den XPath -Selektor Ihres gewünschten Elements zu erhalten, wählen Sie das Element aus dem aus Elemente Tab von Chrome Developer Tool und klicken Sie mit der rechten Maustaste (RMB) darauf. Dann auswählen Kopieren > Kopieren Sie XPath, wie im Screenshot unten markiert.

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

Holen Sie sich den XPath -Selektor mit dem Firefox Developer Tool:

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

Öffnen Sie Firefox und besuchen Sie die Website, aus der Sie Daten extrahieren möchten. Drücken Sie dann die rechte Maustaste (RMB) auf einem leeren Bereich der Seite und klicken Sie auf Element inspizieren (q) um die zu öffnen Firefox Developer Tool.

Firefox Developer Tool sollte geöffnet werden.

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

) Symbol, wie im Screenshot unten markiert.

Drücken Sie dann ü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 in der hervorgehoben Inspektor Tab von Firefox Developer Tool, Wie Sie im Screenshot unten sehen können.

Um den XPath -Selektor Ihres gewünschten Elements zu erhalten, wählen Sie das Element aus dem aus Inspektor Tab von Firefox Developer Tool und klicken Sie mit der rechten Maustaste (RMB) darauf. Dann auswählen Kopieren > XPath wie im Screenshot unten markiert.

Der XPath -Selektor Ihres gewünschten Elements sollte ungefähr so ​​aussehen.

Extrahieren von Daten von Webseiten mit XPath Selector:

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

Erstellen Sie zunächst ein neues Python -Skript Ex01.py und geben Sie die folgenden Codes -Zeilen ein.

vom Selenium importieren Webdriver
Aus Selen.Webdriver.gemeinsam.Schlüssel importieren Schlüsseln
Aus Selen.Webdriver.gemeinsam.durch Import durch
Optionen = Webdriver.ChromeOptions ()
Optionen.Kopflos = wahr
browser = webdriver.Chrome (ausführbarer_path = "./Treiber/Chromedriver ",
Optionen = Optionen)
Browser.Get ("https: // www.Unixtimestamp.com/")
TIMESTAMP = Browser.find_element_by_xpath ('/html/body/div [1]/div [1]
/div [2]/div [1]/div/h3 [2] ')
drucken ('aktueller Zeitstempel: % s' % (Zeitstempel.Text.split (") [0]))
Browser.schließen()

Sobald Sie fertig sind, speichern Sie die Ex01.py Python -Skript.

Zeile 1-3 importiert alle erforderlichen Selenkomponenten.

Zeile 5 erstellt ein Chrome -Optionsobjekt, und Zeile 6 ermöglicht den Kopflosenmodus für den Chrome -Webbrowser.

Zeile 8 erzeugt ein Chrom Browser Objekt mit dem Chromedriver binär von der Treiber/ Projektverzeichnis.

Zeile 10 teilt dem Browser an, die Website Unixtimestamp zu laden.com.

Zeile 12 findet das Element, das die Zeitstempeldaten von der Seite mit dem XPath -Selektor enthält, und speichert sie in der Zeitstempel Variable.

Zeile 13 analysiert die Zeitstempeldaten aus dem Element und druckt sie auf der Konsole aus.

Ich habe den XPath -Selektor des Marked kopiert H2 Element von Unixtimestamp.com Verwenden des Chrome Developer Tools.

Zeile 14 schließt den Browser.

Führen Sie das Python -Skript aus Ex01.py folgendermaßen:

$ python3 ex01.py

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

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

Anstatt Browser.find_element_by_xpath () Methode können Sie auch verwenden Browser.find_element (von, selector) Methode. Diese Methode benötigt zwei Parameter. Der erste Parameter Von wird sein Von.XPath Wie 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 Selector, erstellen Sie ein neues Python -Skript Ex02.py, Kopieren Sie alle Zeilen aus und fügen Sie ihn ein Ex01.py Zu Ex02.py und ändern Zeile 12 wie im Screenshot unten markiert.

Wie Sie sehen können, das Python -Skript Ex02.py gibt das gleiche Ergebnis wie Ex01.py.

$ python3 ex02.py

Der 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 mit XPath -Selektoren mehrere Elemente finden und auswählen möchten, müssen Sie verwenden Browser.find_elements_by_xpath () oder Browser.find_elements () Methoden.

Der Browser.find_elements_by_xpath () Methode nimmt das gleiche Argument wie die Browser.find_element_by_xpath () Methode.

Der Browser.find_elements () Methode nimmt die gleichen Argumente wie die Browser.find_element () Methode.

Sehen wir uns ein Beispiel für das Extrahieren einer Liste von Namen mit XPath Selector von sehen Zufälliger General-Generator.die Info mit der Selenium Python Library.

Die ungeordnete Liste (ol Tag) hat eine 10 li Tags in jeweils einen zufälligen Namen enthält. Der XPath, um alle auszuwählen li Tags in der ol Tag in diesem Fall ist //*[@id = ”main”]/div [3]/div [2]/ol // li

Lassen Sie uns ein Beispiel für die Auswahl mehrerer Elemente auf der Webseite mithilfe von XPath -Selektoren durchlaufen.

Erstellen Sie ein neues Python -Skript Ex03.py und geben Sie die folgenden Codes -Zeilen darin ein.

vom Selenium importieren Webdriver
Aus Selen.Webdriver.gemeinsam.Schlüssel importieren Schlüsseln
Aus Selen.Webdriver.gemeinsam.durch Import durch
Optionen = Webdriver.ChromeOptions ()
Optionen.Kopflos = wahr
browser = webdriver.Chrome (ausführbarer_path = "./Treiber/Chromedriver ",
Optionen = Optionen)
Browser.Get ("http: // random-name generator.die Info/")
Namen = Browser.find_elements_by_xpath ('
//*[@id = "main"]/div [3]/div [2]/ol // li '))
Für den Namen in Namen:
Druck (Name.Text)
Browser.schließen()

Sobald Sie fertig sind, speichern Sie die Ex03.py Python -Skript.

Zeile 1-8 ist dasselbe wie in Ex01.py Python -Skript. Also werde ich sie hier nicht wieder erklären.

Zeile 10 teilt dem Browser an.die Info.

Zeile 12 wählt die Namensliste mit dem aus 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. Dann wird die Namensliste in der gespeichert Namen Variable.

In den Zeilen 13 und 14 a für Schleife wird verwendet, um durch die zu iterieren Namen Listen Sie die Namen auf der Konsole auf und drucken Sie sie aus.

Zeile 16 schließt den Browser.

Führen Sie das Python -Skript aus Ex03.py folgendermaßen:

$ python3 ex03.py

Wie Sie sehen können, werden die Namen auf der Webseite extrahiert und auf der Konsole gedruckt.

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

Zu experimentieren mit Browser.find_elements () Methode erstellen Sie ein neues Python -Skript Ex04.py, Kopieren Sie alle Codes von Ex03.py Zu Ex04.py, und ändern Sie die Zeile 12 wie im Screenshot unten markiert.

Sie sollten das gleiche Ergebnis wie zuvor erhalten.

$ python3 ex04.py

Grundlagen des XPath -Selektors:

Das Entwickler -Tool von Firefox oder Google Chrome Webbrowser generiert automatisch XPath -Selektor. Diese XPath -Selektoren reichen jedoch manchmal nicht für Ihr Projekt aus. In diesem Fall müssen Sie wissen, was ein bestimmter XPath -Selektor tut, um Ihren XPath -Selektor zu erstellen. In diesem Abschnitt werde ich Ihnen die Grundlagen der XPath -Selektoren zeigen. 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 im www/ Verzeichnis und Geben Sie die folgenden Zeilen in dieser Datei ein.






Basic HTML -Dokument


Hallo Welt



Sobald 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 zugreifen zu können Web01.html Datei mit der URL http: // localhost: 8080/web01.HTML, wie Sie im Screenshot unten sehen können.

Während das Firefox- oder Chrom -Entwicklerwerkzeug geöffnet wird, drücken Sie + F So öffnen Sie das Suchfeld. Sie können hier Ihren XPath -Selektor eingeben und sehen, was sie sehr einfach 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. Der / ist die Wurzel aller Elemente auf der Webseite.

Das erste Element ist das html. Also der XPath -Selektor /html wählt die gesamte Auswahl aus html Schild.

In der html Tag, wir haben eine Körper Schild. Der Körper Tag kann mit dem XPath -Selektor ausgewählt werden /HTML/Körper

Der H1 Der Kopf ist im Inneren der Körper Schild. Der H1 Der Header kann mit dem XPath -Selektor ausgewählt werden /html/body/h1

Diese Art von XPath -Selektor wird als absoluter Pfadauswahl bezeichnet. In Absolutes Pfadauswahl müssen Sie die Webseite aus dem Stamm (/) der Seite durchqueren. Der Nachteil eines absoluten Pfadauswahl. Die Lösung für dieses Problem ist ein relativer oder partieller XPath -Selektor.

Um zu sehen, wie der relative Pfad oder ein teilweise Pfad funktioniert, erstellen Sie eine neue Datei Web02.html im www/ Verzeichnis und Geben Sie die folgenden Codes -Zeilen darin ein.






Basic HTML -Dokument


Hallo Welt



Dies ist eine Nachricht




Hallo Welt


Sobald Sie fertig sind, speichern Sie die Web02.html Datei und laden Sie es in Ihren Webbrowser.

Wie Sie sehen können, der XPath -Selektor // div/p wählt die aus P Tag in der div Schild. Dies ist ein Beispiel für einen relativen XPath -Selektor.

Der relative 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, die auszuwählen P Element in a div Element spielt keine Rolle, was davor kommt.

Sie können auch Elemente nach verschiedenen Attributen wie wie aus auswählen Ausweis, Klasse, Typ, usw. Verwenden von XPath Selector. Mal sehen, wie das geht.

Erstellen Sie eine neue Datei Web03.html im www/ Verzeichnis und Geben Sie die folgenden Codes -Zeilen darin ein.






Basic HTML -Dokument


Hallo Welt



Dies ist eine Nachricht


Dies ist eine andere Nachricht


Überschrift 2


Lorem Ipsum Dolor Sit Amet Consectetur, Adipisicing Elit. Quibusdam
Eligendi Doloribus Sapiente, Molestias Quos Quae Non -Nam Incidunt Quis Delectus
FACILIS Magni Officiis alias Neque Atque Fuga? Unter, Aut Natus?




Dies ist eine Fußzeile


Sobald Sie fertig sind, speichern Sie die Web03.html Datei und laden Sie es in Ihren Webbrowser.

Angenommen, Sie möchten alle auswählen div Elemente, die die haben Klasse Name Container1. 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']

So wählen Sie den ersten aus div Element mit dem Klasse Name Container1, hinzufügen [1] Am Ende der XPath -Auswahl, wie im Screenshot unten gezeigt.

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

Sie können Elemente nach auswählen Ausweis sowie.

Zum Beispiel das Element auszuwählen, das das hat Ausweis von Fußzeile-MSG, Sie können den XPath -Selektor verwenden //*[@id = 'footer-msg']

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

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

Abschluss:

In diesem Artikel habe ich Ihnen gezeigt. Ich habe auch die häufigsten XPath -Selektoren besprochen. Nach dem Lesen dieses Artikels sollten Sie sich ziemlich zuversichtlich fühlen, Elemente auf Webseiten mit dem XPath -Selektor mit der Selenium Python Library auszuwählen.