Dans l'article précédent, j'ai brièvement présenté le Concept de base de XPath. Cette fois, je vais vous présenter comment spécifier et acquérir des données à partir d'une page Web (HTML) à l'aide de XPath, c'est-à-dire comment écrire XPath.
Dans l'exemple HTML ci-dessous, vous pouvez voir que le texte est entouré de symboles tels que <> </ strong>, tels que </ html>. Des symboles tels que <> </ strong> sont appelés balises.
** <nom de la balise> Le contenu sera ici ... </ nom de la balise>
**
La première balise est appelée "balise de début" et la balise de fin est appelée "balise de fin". Et l'ensemble de cette balise de début à la balise de fin s'appelle un élément.
La partie affichée en rouge dans le HTML ci-dessous est la balise. (Il s'affiche en bleu dans Firefox et en violet dans Chrome.)
Vous trouverez ci-dessous un résumé des balises que vous voyez souvent dans HTML. Pour plus d'informations, veuillez consulter cet article!
** La manière la plus courante d'écrire XPath est d'écrire les balises séparées par une barre oblique «/». ** **
Par exemple, si vous voulez obtenir «Harry Potter» à partir de ce code HTML, vous pouvez spécifier «html tag-> body tag-> h1 tag» dans l'ordre à partir du haut de l'arborescence. Écrivez comme suit.
/html/body/h1
Vous pouvez également utiliser "//" pour omettre le chemin à mi-chemin.
//h1
Vous pouvez spécifier la Nième balise si vous souhaitez faire correspondre plusieurs balises. Dans cet exemple, lorsque vous obtenez «7 631 yens», il s'agit de «span» sur la deuxième ligne de la ligne «div», alors écrivez comme suit.
//div/span[2]
En abstraction, la syntaxe XPath écrite en balises (éléments) ressemble à ceci:
** // Nom de la balise //タグ名/タグ名
**
Les attributs sont décrits à l'intérieur des balises et représentent les informations des balises en détail. En ajoutant des attributs aux balises, vous pouvez spécifier l'effet de l'élément et ajouter des instructions spécifiques. Les attributs sont généralement affichés sous la forme ** "id =" booksTitle "" **. Il est également possible de spécifier plusieurs attributs.
** <nom de la balise attribut name =" valeur de l'attribut ">
**
Les attributs les plus courants sont href, title, style, src, id, class et ainsi de suite. Veuillez consulter cet article pour plus de détails!
** Dans XPath, les attributs sont représentés par des fonctions "@". ** **
Par exemple, si vous voulez obtenir «Harry Potter», écrivez XPath comme suit.
//h1[@id="booksTitle"]
En abstraction, la syntaxe XPath écrite dans les attributs ressemble à ceci:
** // Nom de la balise [@ nom de l'attribut =" valeur de l'attribut "]
**
Si vous voulez obtenir tous les éléments avec les mêmes attributs, écrivez:
** // * [@ nom de l'attribut =" valeur de l'attribut "]
**
Le texte est entouré de balises comme indiqué ci-dessous.
** <Nom de la balise> Le texte va ici ... </ Nom de la balise>
**
La récupération de données à partir d'une page Web consiste généralement à récupérer le contenu ou le texte de la page. Vous pouvez donc spécifier directement 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 dans le texte et écrivez comme suit.
//h1[text()="Harry Potter"]
En abstraction, la syntaxe XPath écrite dans les attributs ressemble à ceci:
** // Nom de la balise [text () =" Texte à récupérer "]
**
Si vous voulez obtenir tous les éléments avec le même texte, écrivez:
** // * [text () =" texte à obtenir "]
**
Dans l'arborescence HTML, tous les éléments ont une relation parent-enfant / frère.
Les éléments qui contiennent un ou plusieurs éléments sont appelés éléments parents et ceux qui contiennent sont des éléments enfants. L'élément enfant n'a qu'un seul parent et se trouve entre les balises de début et de fin du parent. Les éléments avec le même parent sont appelés éléments frères.
Regardons également un exemple concret.
L'exemple ci-dessous est basé sur l'élément [body], où l'élément [body] est le parent des éléments [h1] et [div], et les éléments [h1] et [div] sont des enfants de l'élément [body]. Ceci est un exemple d'obtention d'éléments qui ont une relation parent-enfant / fratrie et de changement de style pour chacun.
Les éléments [h1] et [div] sont frères car ils ont le même élément parent [body].
De plus, puisque l'élément [div] est le parent des deux éléments [span], les deux éléments [span] sont les descendants de l'élément [body].
Vous pouvez obtenir des éléments qui ont une relation parent-enfant ou frère avec l'élément actuel comme point de base. Par exemple, si vous voulez obtenir "7 631 yens", vous pouvez écrire comme suit en le spécifiant par rapport à la balise.
** Lorsque vous en faites un élément enfant de l'élément [div] **
//div/span[2]
** En en faisant un élément descendant de l'élément [body] **
//body//span[2]
** Lorsque vous en faites un élément frère de l'élément [span class = "author not Faded"] **
//span[@class="author notFaded"]/following-sibling::span[1]
** Lorsque vous en faites un élément frère de l'élément [span class = "tax_postage"] **
//span[@class="tax_postage"]/preceding-sibling::span[1]
Deux fonctions, "following-sibling ::" et "precedent-sibling ::", sont souvent utilisées pour spécifier des balises frères.
"Follow-sibling ::" est très utile pour spécifier des éléments de table. Par exemple, il existe l'exemple HTML suivant.
Lorsque ce code HTML est converti en page, il ressemblera au tableau suivant.
Dans cet exemple, le nom de magasin "12345" est acquis. Cependant, il existe plusieurs éléments [td] et ** // td [1] ** ne peut pas être utilisé. De plus, si vous voulez obtenir des tables avec la même structure à partir de plusieurs pages à la fois, il est recommandé d'utiliser "following-sibling ::" avec la valeur fixe "store name" comme point de base. Écrivez comme suit.
** // th [text () =" nom du magasin "] / frère-suivant :: td [1]
**
En abstraction, la syntaxe XPath écrite dans les relations de balises ressemble à ceci: Si la syntaxe ci-dessus correspond à plus d'une, vous pouvez spécifier la Nième balise en ajoutant ** [N] **.
Qu'est-ce que tu penses? Ce qui précède est la méthode d'écriture XPath la plus utilisée. Veuillez essayer. La prochaine fois, je présenterai les fonctions qui sont souvent utilisées pour XPath. impatient de!
Article original: https://helpcenter.octoparse.jp/hc/ja/articles/360013122059
Recommended Posts