Aller au contenu

XPath : 4 raccourcis que tu utilises sans même le savoir

Antoine Brisset
Antoine Brisset
Temps de lecture : 1 min
XPath : 4 raccourcis que tu utilises sans même le savoir
Photo by Hans-Peter Gauster / Unsplash

Table des matières

Cette semaine, je suis tombé sur une excellente présentation de Jonathan Moore au Brighton SEO à propos de XPath : The Xpath To Discovery.

Des rappels sur les fondamentaux, des astuces, des cas d'usage avec Screaming Frog... je te conseille vraiment de la lire.

En la parcourant, je me suis souvenu d'un thread concernant XPath que j'avais justement publié sur Twitter il y a quelques mois.

Et je me suis dit que ça pourrait être intéressant de te le partager ici.


Si tu scrapes des données avec XPath, il est fort probable que tu utilises des raccourcis sans même t'en rendre compte.

Voici 4 exemples.

descendant-or-self

Quand tu utilises le double slash //, en réalité, tu utilises un raccourci pour /descendant-or-self::node().

Autrement dit, l'expression //div//h2, par exemple, équivaut à //div/descendant-or-self::h2 (= je cherche dans le document tous les h2 qui sont les descendants des balises div).

⚠️ // en début d'expression XPath n'a pas la même signification : c'est un préfixe qui signifie "n'importe où".

child

Admettons que tu souhaites sélectionner les balises li enfants des balises ul.

Logiquement, tu vas utiliser l'expression XPath //ul/li.

Eh bien en réalité, c'est un raccourci pour //ul/child::li.

child:: étant l'axe par défaut (l'axe = la relation avec le nœud courant, autrement dit le sens de "lecture").

attribute

Quand tu veux extraire les attributs href des balises a d'une page, tu utilises certainement l'expression //a/@href.

Ici aussi, il s'agit d'un raccourci pour //a[attribute::href].

@ étant l'expression simplifiée de attribute::.

self

Imaginons que tu cherches à extraire, dans une page, tous les h2 contenant le mot "Comment".

Pour y arriver, tu vas probablement passer par l'expression //h2[contains(., "Comment")].

Le point ici renvoie en fait à self::node(), c'est-à-dire le nœud courant.

Tu pourrais donc tout-à-fait écrire //h2[contains(self::node(), "Comment")] et parvenir au même résultat.

Et voilà. J'espère que ce petit éclairage autour du langage XPath te sera utile :)

XPath

Antoine Brisset Twitter

Consultant SEO depuis 2010. Je traque les clics inutiles et j'automatise les tâches répétitives pour gagner du temps dans mon quotidien de travailleur du web.


Articles Similaires

Membres Public

Balise strong dans une balise hn : détectez la suroptimisation avec Screaming Frog !

Quand je reçois des contenus au format Word ou Google Docs, il arrive souvent qu'en les collant dans l'éditeur WordPress (ou un autre éditeur WYSIWIG), les titres soient automatiquement mis en gras. Ce qui donne par exemple ce type de code HTML : <h2><

Balise strong dans une balise hn : détectez la suroptimisation avec Screaming Frog !
Membres Public

Attention à l'utilisation de "contains" dans tes requêtes XPath

Aujourd'hui, j'aimerais attirer ton attention sur un petit détail que tu dois garder en tête quand tu joues avec XPath. Quand tu utilises la fonction contains,  pour vérifier par exemple si une balise contient une classe CSS spécifique, il y a de fortes chances que tu

Attention à l'utilisation de "contains" dans tes requêtes XPath
Membres Public

Comment extraire un élément dont le nom commence par un signe de ponctuation avec XPath ?

La semaine dernière, alors que j'étais en train de développer un petit script Ruby pour des besoins de scraping, je suis resté bloqué quelques minutes sur un problème que je n'avais encore jamais rencontré. Il fallait que je récupére la valeur d'un attribut HTML

Comment extraire un élément dont le nom commence par un signe de ponctuation avec XPath ?