Comment écrire une requête XPath ? | Octoparse Tutoriel 2022
Monday, February 21, 2022Il existe deux façons d'extraire automatiquement des données d'un site web: la première consiste à créer un robot d'exploration du web dans un langage de programmation tel que Python, et la seconde à utiliser un outil de scraping web tel qu'Octoparse pour scraper les données. Mais quelle que soit l'approche adoptée, la XPath joue un rôle important : si vous savez comment écrire une requête XPath, vous pouvez récupérer des données plus correctement et plus efficacement.
Dans cet article, nous allons donc nous pencher sur les concepts de base de XPath, la manière d'écrire XPath et certaines des fonctions les plus utilisées.
Sommaire
1. Qu'est-ce que XPath?
2. Comment fonctionne la requête XPath
3. Comment rechercher et écrire une requête XPath
II. Comment écrire XPath
1. Élément
2. Attribut
3. Texte
4. Relation d'élément
Ⅲ. Les fonctions les plus utilisées de XPath
1. contains() : spécifie un élément contenant une chaîne de caractères particulière.
2. position() : spécifie un élément dans une position particulière
3. et/non/or : spécifie un élément contenant des conditions multiples.
I. Concepts de base de XPath
Dans cette partie, nous présentons brièvement les concepts de base de XPath.
1. Qu'est-ce que la XPath?
XPath (XML Path Language) est une syntaxe (langage) concise permettant de spécifier des éléments, des valeurs d'attributs, etc., à partir de documents XML/HTML structurés en arborescence.
Les pages Web étant généralement écrites en HTML, la XPath est souvent utilisée pour extraire des informations des pages Web. Si vous souhaitez visualiser le HTML d'une page web dans votre navigateur (Chrome, Firefox, etc.), vous pouvez facilement accéder au document HTML correspondant en appuyant sur F12.
2. Comment fonctionne la requête XPath
Voyons comment fonctionne la XPath. L'image ci-dessous fait partie d'un document HTML.
HTML est comme une structure arborescente avec différents niveaux. Dans cet exemple, le premier niveau est bookstore, le deuxième niveau est book, et title, author, year et price sont tous de troisième niveau.
Le texte avec des crochets (comme <bookstore>) est appelé un élément; les éléments HTML se composent généralement d'une balise de début et d'une balise de fin, avec du contenu inséré entre les deux.
XPaths décrit une structure hiérarchique, séparée par une barre oblique "/", et vous permet de spécifier différents nœuds à partir d'un nœud de référence (Axe), similaire à une URL. Dans cet exemple, pour rechercher l'élément "author", XPath ressemble à ceci :
Pour trouver le fichier nommé "Author", le chemin de fichier correct est : bookstore (book) (author).

XPath absolu: XPath qui part de l'élément racine (l'élément supérieur du document) et passe par tous les éléments qu'il contient pour atteindre l'élément cible.
XPath absolue:
3. Comment rechercher et écrire une requête XPath




II. Comment écrire XPath
1. Localiser par élément
Dans l'exemple HTML ci-dessous, vous pouvez voir que le texte est entouré de symboles tels que <strong> </strong>, <html> </ html>. Les symboles tels que <strong></strong> sont appelés des balises.
Les parties affichées en rouge dans le code HTML ci-dessous sont des balises. (Il apparaît en bleu dans Firefox et en violet dans Chrome.)

<a> </a> | un lien |
<p> </p> | un paragraphe |
<div> </div> | une plage spécifique |
<li> </li> | un élément de liste |
<img> </img> | une image |
<table> </table> | un tableau |
<tr> </tr> | une ligne de tableau |
<td> </td> | une colonne de tableau |
La façon la plus courante d'écrire XPath est d'écrire des balises séparées par des barres obliques "/".
Par exemple, si vous souhaitez obtenir "Harry Potter" à partir de ce code HTML, vous pouvez spécifier "balise html-> balise body-> balise h1" à partir du haut de l'arborescence. Écrit comme:
et
2. Localiser par attribut
Par exemple, si vous voulez obtenir "Harry Potter", veuillez écrire XPath comme:

3. Localiser par texte
<nom de la balise> texte </nom de la balise>
La récupération de données à partir d'une page Web consiste généralement à récupérer du contenu ou du texte dans la page. Ainsi, vous pouvez directement localiser le texte que vous souhaitez obtenir.
Dans XPath, le texte est représenté par la fonction "text()".
Par exemple, si vous voulez obtenir "Harry Potter", spécifiez le texte et écrivez-le:

Si vous souhaitez obtenir le même texte pour tous les éléments, écrivez:
4. Localiser par des relations de balises
L'élément qui contient un ou plusieurs éléments est appelé l'élément parent et l'élément contenu est appelé élément enfant.
L'élément enfant n'a qu'un seul élément parent et est situé entre les balises de début et de fin de l'élément parent. Les éléments ayant le même élément parent sont appelés éléments frères.
Regardons également un exemple spécifique.

L'exemple suivant est basé sur l'élément <body>, où l'élément <body> est l'élément parent des éléments <h1> et <div>, et les éléments <h1> et <div> sont les éléments enfants du < body> element. Et <h1> et <div> sont les éléments frères car ils ont le même élément parent <body>.
De plus, puisque l'élément <div> est l'élément parent de deux éléments <span>, les deux éléments <span> sont les descendants de l'élément <body>.

Considérez-le comme un élément enfant de l'élément <div>:
"Preceding-sibling ::" localiser l'élément frère avant l'élément spécifié
"Following-sibling ::" est très utile pour des éléments du tableau. Par exemple, il y a l'exemple HTML suivant.

店名 | 12345 |
ジャンル | 居酒屋 |
予約可否 | 予約可 |
Dans cet exemple, nous voulons obtenir le nom du magasin "12345". Cependant, il existe plusieurs éléments <td>, // td [1] ne peut pas les gérer. De plus, si vous souhaitez obtenir une table avec la même structure à partir de plusieurs pages à la fois, il est recommandé d'utiliser "following-sibling ::" avec une valeur fixe comme l'axe.

Elément parent: // nom de balise d'axe / ..
Élément enfant: // nom de balise d'axe / nom de l'élément enfant
Elément descendant: // nom de balise d'axe // nom de l'élément descendant
L'élément frère suivant: // nom de balise d'axe / following-sibling:: nom de l'élément frère après lui
L'élément frère précédent: // nom de balise d'axe / preceding-sibling:: nom de l'élément frère avant lui
S'il existe plusieurs correspondances qui répondent aux critères, vous pouvez ajouter [N] pour spécifier le Nième élément.
Ⅲ. Les fonctions les plus utilisées de XPath
1.contains() : localise un élément qui contient une chaîne spécifique
contains(@class, "XXX") : localise l'élément dont la valeur d'attribut contient une chaîne spécifique.



2.position(): localiser l'élément à une position spécifique

Par exemple, dans le code HTML ci-dessus, "Product 3" est le quatrième élément, il est donc écrit comme suit.
2.position()=
3.position()>
Si vous souhaitez obtenir des éléments autres que "ad", car "ad" est le premier élément, Xpath:

3.and/not/or : sélectionner des éléments contenant plusieurs conditions

Conclusion:
Posts les plus populaires
- 1 . Exporter les résultats de recherche de Google Maps vers Excel
- 2 . Scraping TripAdvisor pour obtenir des données d'hôtels/restaurants facilement
- 3 . Utiliser Google Sheets pour web scraping simple (mise à jour 2023)
- 4 . 5 meilleurs outils pour scraper Google Maps en 2023
- 5 . 10 Meilleur Web Scraper Open Source en 2023
Posts par sujet