XPath (XML Path Language) est un langage d'expression W3C pour adresser et sélectionner des parties d'un document XML, et il peut également naviguer dans le HTML. Sa caractéristique définissante est l'expression de chemin, telle que //a/@href, qui parcourt l'arbre du document pour atteindre des éléments, des attributs ou du texte. Les outils de scraping tels que Scrapy prennent en charge XPath pour extraire des données des pages téléchargées.
La version actuelle, XPath 3.1, est devenue une recommandation W3C le 21 mars 2017. Elle fonctionne sur XML et, dans cette version, sur des données JSON.
Bases de la syntaxe XPath
- Chemin :
//titlesélectionne chaque élémenttitlen'importe où dans le document. - Texte :
//title/text()renvoie le texte à l'intérieur de ces éléments. - Attributs :
@sélectionne un attribut, donc//a/@hrefrenvoie les cibles de lien. - Prédicats : Les crochets carrés filtrent les résultats, donc
//div[@class="price"]garde uniquement les élémentsdivavec cette classe.
XPath dans le Web Scraping
Les sélecteurs Scrapy acceptent à la fois XPath et CSS, et Scrapy traduit les requêtes CSS en XPath en interne en utilisant la bibliothèque cssselect. Ses sélecteurs utilisent la bibliothèque lxml en arrière-plan. Dans les navigateurs, XPath peut naviguer dans le DOM des documents HTML et SVG via l'interface XPathExpression, en alternative à des méthodes comme querySelectorAll().
Fonctions XPath et XSLT
XPath est conçu pour être intégré dans un langage hôte tel que XSLT. Le W3C définit une bibliothèque de fonctions, dans l'espace de noms fn, pour XPath, XQuery et XSLT. Les fonctions utiles dans le scraping incluent :
contains()etstarts-with(): Correspondance de sous-chaînes.normalize-space()etstring-length(): Fonctionnent sur des valeurs de chaîne.count(): Compte les éléments.
Par exemple, //a[contains(@href, "product")] garde uniquement les liens dont l'URL contient "produit".