Aujourd’hui, le web scraping est devenu un outil essentiel pour extraire du contenu d’un site web tiers et l’utiliser dans vos projets. C’est pour cette raison que je vous propose cet article en 2 parties sur l’utilisation du script PHP Goutte.

Important, cet article est une traduction remaniée de l’article en Anglais disponible sur dev.to.

J’ai eu besoin de faire appel au Web Scrapping dans le cadre d’un projet pour mon boulot. L’idée était de pouvoir extraire des données venant de plusieurs sites différents pour les comparer les unes aux autres et effectuer des calculs sur ces données.

A force de recherches j’ai fini par tomber sur Goutte qui m’a semblé être le script le plus léger mais aussi le plus abouti en php et basé sur l’utilisation de 3 composants venant de Symfony qui est clairement le framework adapté à notre architecture MVC (Modèle / Vue / Contrôleurs) et POO (Programmation Orientée Objets).

Browser Kit

Le composant le plus simple qui permet de simuler le comportement naturel d’un navigateur Web lorsqu’il visite une page. C’est le composant fondateur de Goutte.

DomCrawler

Le DOM ou Document Object Model est une interface de programmation normalisée par le W3C (World Wide Web Consortium) qui permet à des scripts d’examiner et de modifier le contenu des navigateur web.

Ce composant permet ainsi de naviguer plus simplement dans la page comme ceci :

Je peux également parcourir les nœuds du DOM en utilisant certaines des méthodes qu’il fournit. Par exemple, si je veux obtenir le premier paragraphe dans le corps de la page, je peux le faire:

La méthode eq () est indexée sur zéro et elle prend un nombre spécifiant la position de l’élément auquel nous voulons accéder.
Il existe d ‘autres méthodes telles que siblings (), first () [un alias de eq (0)], last (), etc…

CssSelector

Le CssSelector est le composant qui nous permet de sélectionner des éléments via leurs sélecteurs CSS. Il convertit les sélecteurs CSS en leurs équivalents XPath. Par exemple, disons que je souhaite sélectionner un élément avec une classe appelée « title », je peux faire ceci:

Le composant CssSelector est si puissant qu’il prend même en charge les CSS tels que :

Ce qui précède signifie que je cherche un élément div avec un attribut "style=max-height:175px; overflow: hidden;"

Pour plus d’informations, je vous conseille de lire les documentations de DomCrawler, CssSelector et Goutte .


Maintenant que vous savez à quoi correspondent les 3 composants majeurs, il est temps de les réunir tous ensembles avec Goutte et de scraper quelque chose.

Comme vous l’avez surement déjà compris, en ce qui concerne le scraping, il n’y a pas de règle précise pour le faire.

Cela ne dépends que de vous et de votre liberté d’explorer et d’essayer les nombreuses façons possible de récupérer des données.

Votre seule limite et donc votre créativité mais il ne serait pas étonnant que vous ayez besoin de combiner DomCrawler et CssSelector pour obtenir ce que vous voulez.

Voila pour ce premier post d’introduction à Goutte. Dans le prochain article, on va pouvoir rentrer dans le détail et mettre en application le fonctionnement du script.

Web Scraping avec Goutte – Partie 2

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.