[PYTHON] XPath-Grundlagen (2) - So schreiben Sie XPath

Im vorherigen Artikel habe ich kurz das [Grundkonzept von XPath] vorgestellt (https://qiita.com/Octoparse_Japan/items/b54e42d696d2311b7b9a). Dieses Mal werde ich vorstellen, wie man mit XPath Daten von einer Webseite (HTML) spezifiziert und erfasst, dh wie man XPath schreibt.

1. Geben Sie nach Tag (Element) an

Im folgenden HTML-Beispiel sehen Sie, dass der Text von Symbolen wie <> </ strong> wie </ html> umgeben ist. Solche Symbole wie <> </ strong> werden als Tags bezeichnet.

** <Tagname> Der Inhalt wird hier sein ... </ Tagname> **

Das erste Tag wird als "Start-Tag" und das End-Tag als "End-Tag" bezeichnet. Und das Ganze von diesem Start-Tag bis zum End-Tag wird als Element bezeichnet.

Der Teil, der im HTML unten rot angezeigt wird, ist das Tag. (Es wird in Firefox blau und in Chrome lila angezeigt.) Harry Potter(html).jpg

Unten finden Sie eine Zusammenfassung der Tags, die Sie häufig in HTML sehen. Weitere Informationen finden Sie in diesem Artikel! 微信截图_20200515172336.png

** Die häufigste Methode zum Schreiben von XPath besteht darin, die durch einen Schrägstrich „/“ getrennten Tags zu schreiben. ** **.

Wenn Sie beispielsweise "Harry Potter" aus diesem HTML-Code abrufen möchten, können Sie "HTML-Tag-> Body-Tag-> h1-Tag" in der Reihenfolge oben in der Baumstruktur angeben. Schreiben Sie wie folgt.

/html/body/h1

Sie können auch "//" verwenden, um den halben Pfad wegzulassen.

//h1 mceclip1.png Sie können das N-te Tag angeben, wenn Sie mehr als einem Tag entsprechen möchten. Wenn Sie in diesem Beispiel "7.631 Yen" erhalten, wird in der zweiten Zeile von der Zeile "div" "span" angegeben. Schreiben Sie also wie folgt.

//div/span[2]

In der Abstraktion sieht die in Tags (Elementen) geschriebene XPath-Syntax folgendermaßen aus:

** // Tag-Name //タグ名/タグ名**

2. Geben Sie nach Attribut an

Attribute werden in Tags beschrieben und repräsentieren die Informationen der Tags im Detail. Durch Hinzufügen von Attributen zu Tags können Sie die Wirkung des Elements angeben und bestimmte Anweisungen hinzufügen. Attribute werden normalerweise als ** "id =" booksTitle "" ** angezeigt. Es ist auch möglich, mehrere Attribute anzugeben.

** <tag name attribute name =" attribute value "> **

Die häufigsten Attribute sind href, title, style, src, id, class usw. Bitte lesen Sie diesen Artikel für Details!

** In XPath werden Attribute durch "@" -Funktionen dargestellt. ** **.

Wenn Sie beispielsweise "Harry Potter" erhalten möchten, schreiben Sie XPath wie folgt.

//h1[@id="booksTitle"] mceclip3 (1).png

In der Abstraktion sieht die in Attributen geschriebene XPath-Syntax folgendermaßen aus:

** // Tag name [@ attribute name =" attribute value "] **

Wenn Sie alle Elemente mit denselben Attributen erhalten möchten, schreiben Sie:

** // * [@ attribute name =" attribute value "] **

3. Geben Sie im Text an

Der Text ist wie unten gezeigt in Tags eingeschlossen.

** <Tagname> Text geht hierher ... </ Tagname> **

Beim Abrufen von Daten von einer Webseite wird normalerweise der Inhalt oder Text auf der Seite abgerufen. So können Sie den gewünschten Text direkt angeben.

** In XPath wird Text durch die Funktion "text ()" dargestellt. ** **.

Wenn Sie beispielsweise "Harry Potter" erhalten möchten, geben Sie es im Text an und schreiben Sie wie folgt.

//h1[text()="Harry Potter"] mceclip4.png

In der Abstraktion sieht die in Attributen geschriebene XPath-Syntax folgendermaßen aus:

** // Tag name [text () =" Text zum Abrufen "] **

Wenn Sie alle Elemente mit demselben Text erhalten möchten, schreiben Sie:

** // * [text () =" Text zum Abrufen "] **

4. Geben Sie in Tag-Beziehung an

In der HTML-Baumstruktur haben alle Elemente eine Eltern-Kind / Geschwister-Beziehung.

Elemente, die ein oder mehrere Elemente enthalten, werden als übergeordnete Elemente bezeichnet, und diejenigen, die enthalten, sind untergeordnete Elemente. Das untergeordnete Element hat nur ein übergeordnetes Element und befindet sich zwischen den Start- und End-Tags des übergeordneten Elements. Elemente mit demselben übergeordneten Element werden als Geschwisterelemente bezeichnet.

Schauen wir uns auch ein konkretes Beispiel an.

Das folgende Beispiel basiert auf dem Element [body], wobei das Element [body] das übergeordnete Element der Elemente [h1] und [div] ist und die Elemente [h1] und [div] untergeordnete Elemente des Elements [body] sind. Dies ist ein Beispiel für das Abrufen von Elementen, die eine Eltern-Kind / Geschwister-Beziehung haben, und das Ändern des Stils für jedes Element.

Die Elemente [h1] und [div] sind Geschwister, da sie dasselbe übergeordnete Element [body] haben.

Da das Element [div] das übergeordnete Element der beiden Elemente [span] ist, sind die beiden Elemente [span] Nachkommen des Elements [body].

mceclip0 (1).png

Sie können Elemente erhalten, die eine Eltern-Kind- oder Geschwisterbeziehung zum aktuellen Element als Basispunkt haben. Wenn Sie beispielsweise "7.631 Yen" erhalten möchten, können Sie wie folgt schreiben, indem Sie es in Bezug auf das Tag angeben.

** Wenn Sie es zu einem untergeordneten Element des [div] -Elements machen **

//div/span[2]

** Wenn Sie es zu einem Nachkommenelement des [body] -Elements machen **

//body//span[2]

** Wenn Sie es zu einem Geschwisterelement des Elements [span class = "author not Faded"] machen **

//span[@class="author notFaded"]/following-sibling::span[1]

** Wenn Sie es zu einem Geschwisterelement des Elements [span class = "tax_postage"] machen **

//span[@class="tax_postage"]/preceding-sibling::span[1]

Zwei Funktionen, "folgendes Geschwister ::" und "vorheriges Geschwister ::", werden häufig verwendet, um Geschwister-Tags anzugeben.

"Following-sibling ::" ist sehr nützlich, wenn Sie Tabellenelemente angeben. Zum Beispiel gibt es das folgende HTML-Beispiel. 5.jpg

Wenn dieser HTML-Code in eine Seite konvertiert wird, sieht er wie eine Tabelle wie die folgende aus. 微信截图_20200515173912.png

In diesem Beispiel wird der Geschäftsname "12345" erfasst. Es gibt jedoch mehrere [td] -Elemente, und ** // td [1] ** kann nicht verwendet werden. Wenn Sie Tabellen mit derselben Struktur von mehreren Seiten gleichzeitig abrufen möchten, wird empfohlen, "folgendes Geschwister ::" mit dem festen Wert "Speichername" als Basispunkt zu verwenden. Schreiben Sie wie folgt.

** // th [text () =" Geschäftsname "] / folgendes Geschwister :: td [1] ** 图片1.png

In der Abstraktion sieht die in Tag-Beziehungen geschriebene XPath-Syntax folgendermaßen aus: 微信截图_20200515174203.png Wenn die obige Syntax mit mehreren übereinstimmt, können Sie das N-te Tag durch Hinzufügen von ** [N] ** angeben.

Was denken Sie? Das Obige ist die am häufigsten verwendete XPath-Schreibmethode. Bitte probieren Sie es aus. Nächstes Mal werde ich die Funktionen vorstellen, die häufig für XPath verwendet werden. freue mich auf!

Originalartikel: https://helpcenter.octoparse.jp/hc/ja/articles/360013122059

Recommended Posts

XPath-Grundlagen (2) - So schreiben Sie XPath
Wie man nüchtern mit Pandas schreibt
Wiederverwendung von Flaschen Wie schreibe ich HTML?
So schreiben Sie ein Docker-Basis-Image
Wie schreibe ich Django1.9 umweltunabhängig wsgi.py
Hinweise zum Schreiben von require.txt
Wie man optuna einstellt (wie man einen Suchraum schreibt)
So schreiben Sie Python-Dokumentkommentare (Docstrings)
Jupyter Notebook Grundlagen der Verwendung
Grundlagen von PyTorch (1) - Verwendung von Tensor-
Wie schreibe ich diesen Prozess in Perl?
Wie schreibe ich Ruby to_s in Python
Zusammenfassung des Schreibens von AWS Lambda
Wie schreibe ich pydoc und mehrzeilige Kommentare
Antwort auf "Offline in Echtzeit, wie man ein F02-Problem schreibt"
So schreiben Sie einen ShellScript Bash für Anweisung
Antwort auf "Offline-Echtzeit, wie man ein F01-Problem schreibt"
Antwort auf "Offline-Echtzeit, wie man ein E13-Problem schreibt"
Wie schreibe ich ein benanntes Tupeldokument im Jahr 2020?
[Go] So schreiben oder rufen Sie eine Funktion auf
So schreiben Sie eine ShellScript-Bash-Case-Anweisung
Verwendung von xml.etree.ElementTree
Wie benutzt man Python-Shell
Hinweise zur Verwendung von tf.data
Verwendung von virtualenv
Schaben 2 Wie man kratzt
Wie benutzt man Seaboan?
Verwendung von Image-Match
Wie man Shogun benutzt
So installieren Sie Python
Verwendung von Pandas 2
Wie man PyPI liest
So installieren Sie pip
Verwendung von Virtualenv
Verwendung von numpy.vectorize
So aktualisieren Sie easy_install
So installieren Sie archlinux
Verwendung von pytest_report_header
Wie man Gunicorn neu startet
So installieren Sie Python
Wie zum virtuellen Host
Wie man Selen debuggt
Wie man teilweise verwendet
Wie man Bio.Phylo benutzt
Wie man JSON liest
Verwendung von SymPy
Wie man x-means benutzt
Verwendung von WikiExtractor.py
So aktualisieren Sie Spyder
Verwendung von IPython
So installieren Sie BayesOpt
Verwendung von virtualenv
Wie benutzt man Matplotlib?
Verwendung von iptables
Wie benutzt man numpy?
Verwendung von TokyoTechFes2015
Wie benutzt man venv
Verwendung des Wörterbuchs {}