Xpath pour scraper le web

Xpath permet d’effectuer des requêtes très rapidement afin de localiser un ou plusieurs éléments dans une page web. C’est un langage très puissant permettant d’extraire des données web via Scrapy notamment.

Avec Xpath, il est très facile d’extraire des données d’un site pour les utiliser sur Excel.
Par exemple, pour compter le nombre de <h1> présents sur une page il vous suffit d’effectuer la requête count(//h1).

Résultat de recherche d'images pour "xpath helper"

Introduction à XPath

XPath traite tout document XML ou HTML comme un arbre. Le nœud racine de cet arbre ne fait pas partie du document lui-même. Il est en fait le parent du nœud HTML.
Voici à quoi ressemble l’arbre XPath pour un document HTML :

Xpath HTML

Vous le voyez, il existe plusieurs type de noeuds

  • Element (<div> ou tout autre tag html)
  • Texte (le contenu présent dans la page)
  • Commentaire (les commentaires html <!– … –>)
  • Attribut (les attributs html comme href)

Faire la distinction entre ces éléments permet de mieux appréhender les expressions XPath. Démonstration avec un exemple !
Voici comment sélectionner avec XPath la balise <title> d’une page web :

/html/head/title

Cette expression permet d’accéder premièrement au HTML, ensuite au head et enfin à l’élément title de la page. C’est ce qu’on appelle un “location path” : chaque élément est séparé par un “/”.
Cette expression fonctionne mais est fastidieuse, on peut directement sélectionner l’élément souhaité en utilisant un double slash :

//title

Ce qui veut dire :

Vérifie dans le DOM, en commençant par le début (//) et sélectionne seulement les noeuds dont les noms correspondent avec title.

 

Pour avoir plus facile, il vous suffit d’installer XPath Helper si vous êtes sur Chrome !

 

Laisser un commentaire