Comprendre en profondeur le contenu avancé de XPath : caractères génériques, nœuds, fonctions

Approfondissez votre compréhension des wildcards, des nœuds et des fonctions XPath, ainsi que de la manière de comprendre la structure hiérarchique. Facilitez votre compréhension avec des exemples pratiques.

10
Comprendre en profondeur le contenu avancé de XPath : caractères génériques, nœuds, fonctions

0. Aperçu

Dans la première partie sur XPath, nous avons discuté des concepts essentiels et de la syntaxe de base de XPath, essentiels pour le web scraping. Dans cette deuxième partie, nous aborderons des aspects plus avancés de XPath.

1. Compréhension des caractères génériques

Avant d'entrer dans les détails avancés, il est essentiel de comprendre la signification de l'astérisque ('*') en XPath.

  • L'astérisque correspond à n'importe quel élément en XPath et est utilisé pour sélectionner tous les éléments. Expliquons cela avec un exemple.
//div[contains(@class, "aa")]

Le XPath ci-dessus représente un élément div avec une classe contenant 'aa'. Que se passe-t-il si nous utilisons un astérisque à la place de div ?

//*[contains(@class, "aa")]

Dans ce XPath, '*' correspond à tous les éléments, donc ce XPath représente tous les éléments ayant une classe contenant 'aa'.

2. Compréhension de la structure hiérarchique de XPath

Explorons maintenant des aspects avancés de XPath.

Voici un exemple de code HTML simple.

<AAA>
    <BBB>
        <CCC/>
        <DDD/>
    </BBB>
    <EEE>
        <FFF>
            <GGG/>
            <GGG/>
            <III>
                <JJJ/>
            </III>
        </FFF>
    </EEE>
    <KKK>
        <LLL/>
    </KKK>
</AAA>

Chaque élément et attribut du code HTML forme une structure hiérarchique, représentée sous forme d'arborescence (Tree) en XPath. Les axes indiquent la direction ou la relation utilisée pour référencer et sélectionner les nœuds (node : point de données, unité) dans la structure en arborescence. Les axes incluent l'axe self, parent, child, etc. Nous expliquerons chacun d'eux un par un à l'aide d'exemples ci-dessous.

La structure hiérarchique des éléments ci-dessus est représentée graphiquement comme suit.

image notion

Explorons maintenant comment représenter les nœuds en utilisant les axes.

3. Méthodes de représentation des nœuds

3.1. self

: Représente le nœud actuel lui-même.

/AAA/self::*

Le XPath ci-dessus sélectionne l'élément <AAA>, qui est le nœud actuel.

3.2. parent

: Représente le nœud parent du nœud actuel.

/AAA/EEE/FFF/parent::*

Le XPath ci-dessus sélectionne l'élément <EEE>, parent de l'élément actuel <FFF>.

image notion

3.3. child : Représente les nœuds enfants du nœud actuel.

/AAA/EEE/FFF/child::*

Le XPath ci-dessus sélectionne tous les enfants de l'élément <FFF> : <GGG>, <GGG>, <III>.

image notion

Si vous souhaitez sélectionner uniquement l'élément <III>, vous pouvez modifier le XPath comme suit.

/AAA/EEE/FFF/child::III

De plus, si vous souhaitez sélectionner le premier des deux éléments <GGG>, vous pouvez le faire comme suit.

/AAA/EEE/FFF/child::GGG[1]

Il est important de noter que contrairement à la plupart des autres langages de programmation, les index en XPath commencent à 1!

3.3. ancestor

: Représente tous les ancêtres du nœud actuel.

/AAA/EEE/FFF/ancestor::*

Le XPath ci-dessus sélectionne tous les ancêtres de l'élément <FFF> : <EEE>, <AAA>.

image notion

3.4. descendant

: Représente tous les descendants du nœud actuel.

/AAA/EEE/FFF/descendant::*

Le XPath ci-dessus sélectionne tous les descendants de l'élément <FFF> : <GGG>, <GGG>, <III>, <JJJ>.

image notion

3.5. ancestor-or-self

: Représente le nœud actuel et tous ses ancêtres.

/AAA/EEE/FFF/ancestor-or-self::*

Le XPath ci-dessus sélectionne à la fois le nœud actuel <FFF> et ses ancêtres <EEE>, <AAA>.

3.6. descendant-or-self

: Représente le nœud actuel et tous ses descendants.

/AAA/EEE/FFF/descendant-or-self::*

Le XPath ci-dessus sélectionne à la fois le nœud actuel <FFF> et ses descendants <GGG>, <GGG>, <III>, <JJJ>.

3.7. following

: Représente tous les nœuds qui apparaissent après la balise du nœud actuel.

/AAA/EEE/following::*

Le XPath ci-dessus sélectionne tous les nœuds suivant l'élément <EEE> après sa balise : <FFF>, <GGG>, <GGG>, <III>, <JJJ>, <KKK>, <LLL>.

image notion

3.8. preceding

: Représente tous les nœuds qui apparaissent avant le début de la balise du nœud actuel.

/AAA/EEE/preceding::*

Le XPath ci-dessus sélectionne tous les nœuds précédant l'élément <EEE> avant sa balise : <BBB>, <CCC>, <DDD>.

image notion

3.9. following-sibling

: Représente tous les nœuds frères qui suivent immédiatement le nœud actuel.

/AAA/EEE/following-sibling::*

Le XPath ci-dessus sélectionne le nœud frère suivant immédiatement l'élément <EEE> : <KKK>.

image notion

3.10. preceding-sibling

: Représente tous les nœuds frères qui précèdent immédiatement le nœud actuel.

/AAA/EEE/preceding-sibling::*

Le XPath ci-dessus sélectionne le nœud frère précédant immédiatement l'élément <EEE> : <BBB>.

image notion

Nous avons maintenant examiné les axes utilisés pour représenter les nœuds en XPath.

En outre, explorons deux autres fonctions utilisées en XPath.

4. Fonctions utilisées en XPath

4.1. count

: Retourne le nombre de nœuds répondant à une condition spécifique.

#class 속성 값이 ‘example인 div 요소의 개수를 반환
count(//div[@class="example"])
#p 요소의 총 개수를 반환
count(//p)

4.2. position

: Retourne la position du nœud actuel. (La position commence à 1 et augmente séquentiellement.)

&lt;root&gt;
  &lt;item&gt;Item 1&lt;/item&gt;
  &lt;item&gt;Item 2&lt;/item&gt;
  &lt;item&gt;Item 3&lt;/item&gt;
&lt;/root&gt;

Par exemple, avec le code XML suivant, vous pouvez écrire le XPath comme ceci.

//item[position() = 2]

En utilisant la fonction position, vous pouvez sélectionner le deuxième élément item parmi trois éléments item.

5. Conclusion

Nous avons maintenant exploré les aspects avancés de XPath. Si vous avez maîtrisé à la fois les bases et les aspects avancés, vous avez acquis une connaissance de base suffisante pour trouver précisément les éléments souhaités et extraire des données à partir de documents XML en utilisant XPath.

XPath est un outil puissant pour explorer et manipuler des documents XML, largement utilisé dans des domaines tels que le scraping de données, le scraping web, l'extraction de données à partir de services web basés sur XML, etc. Nous vous souhaitons du succès dans l'extraction et l'utilisation efficaces des données en utilisant XPath!

Lisez également:

Collecte de données, automatisez maintenant

Commencez en 5 minutes sans coder · Expérience de scraping de plus de 5 000 sites web

Commencez gratuitement →

Comments

Add Comment

Your email won't be published and will only be used for reply notifications.

Continuer la lecture

Get notified of new posts

We'll email you when 해시스크래퍼 기술 블로그 publishes new content.

Your email will only be used for new post notifications.