Comment extraire un élément dont le nom commence par un signe de ponctuation avec XPath ?
Table des matières
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 avec XPath (jusque là tout va bien), mais cet attribut commençait par un signe de ponctuation.
En l'occurrence, les deux-points : <div :event="{...}">
.
Pourquoi cette syntaxe ? Aucune idée. L'explication est peut-être à chercher du côté du framework JS utilisé par le site en question (Vue.js).
Au final, peu importe.
La présence des deux-points rendait l'expression XPath ci-dessous invalide.
J'ai donc fouillé un peu sur le web pour trouver comment faire et voilà la solution que j'ai trouvée.
L'astuce, c'est donc d'utiliser la fonction name().
L'expression XPath //div/@*[name()=':event']
va sélectionner tous les attributs qui sont contenus dans une balise div
et qui ont pour nom la chaine de caractères ":event".
Si je voulais aller plus loin et sélectionner tous les attributs commençant par les deux-points, je pourrais même écrire :
//div/@*[starts-with(name(), ':')]
Petite précision : l'astérisque *
indique ici de sélectionner tous les éléments du contexte courant répondant aux critères définis par les fonctions starts-with()
et name()
.
Et voilà ! C'est tout pour aujourd'hui :)
- Partager sur Twitter
- Partager sur Facebook
- Partager sur LinkedIn
- Partager sur Pinterest
- Partager par E-mail
- Copier le lien
Un Template Google Sheets Offert ! 🎁
Rejoins ma newsletter et reçois une astuce SEO chaque mercredi ! En cadeau, je t'offre un template Google Sheets avec 50 fonctions de scraping prêtes à l'emploi.