Scraping de site internet : fonctionnement et usages
Concept
Le scraping consiste à collecter de façon automatisée des informations depuis des sites Web.
Le robot de scraping (aussi appellé scraper), est le plus souvent développé dans un langage de programmation Web, comme PHP, ou Python. Ce dernier propose un certain nombre de librairies facilitant le travail de développement, comme Scrapy ou Beautiful Soup.
Pour nos robots, nous utilisons le langage PHP, avec des librairies comme cURL et SimpleHTML DOM, afin d'effectuer les requêtes et d'extraire le contenu.
Ce contenu est en général rassemblé dans des bases de données (PostgreSQL, MySQL), puis éventuellement extrait dans divers formats (CSV, Excel, JSON...).
Pour quels usages ?
Le scraping permet d'extraire des données de tous types, aussi bien du texte (le plus souvent) que des contenus multimédias (images, etc...).
Quand il s'agit de textes plus ou moins longs, ils peuvent être reformulées (spinning) afin de ne pas générer de duplicate content (contenu dupliqué), qui nuirait grandement au référencement.
Des données tabulaires (exemple : un listing des marques et modèles de voitures) seront souvent rassemblées au sein d'une ou plusieurs tables d'une base de données, ou exportées sous un format facilement lisible (Excel).
Ces données peuvent également être ré-arrangées dans leur structure, afin de les importer directement au sein d'un système existant (Wordpress, Prestashop, etc...).
Différence entre crawler et scraper
Le crawler permet de se déplacer de site en site, ou de page en page au sein d'un site.
Techniquement, cette partie est gérée par les requêtes faites avec la librairie cURL, en PHP. Pour schématiser, le robot simule une navigation manuelle, que pourrait faire un utilisateur naviguant sur le site.
Le scraper, quant à lui, extrait les informations utiles des pages lues. Soit en utilisant le DOM, soit en utilisant des expressions régulières (REGEXP), et se charge de les enregistrer, le plus souvent en base de données.
Donc, pour simplifier, un robot inclut en général une partie crawling et une partie scraping !
Déroulement d'une prestation de scraping
En premier lieu, nous déterminons la, ou les, sources de données à analyser, et les données souhaitées.
Cela permet déja d'avoir une estimation du nombre d'enregistrements à collecter.
Il nous arrive de rencontrer des projets nécessitant l'enregistrement de millions d'entrées, ce qui implique un temps d'importation très conséquent (parfois plusieurs mois), surtout lorsque les sites cibles sont dotés de systèmes anti-spam qui limitent le nombre ou la provenance des accès.
Ensuite, nous déterminons quelle est la structure optimale des données : par exemple, faut-il que les informations soient reliées entre elles (dans le cas des marques et modèles de véhicules, un modèle doit être impérativement relié à une marque) ? C'est pour cette raison qu'il est primordial de réfléchir en amont au résultat attendu.
Une fois la structure créée, il faut développer le robot lui-même, et ce sur-mesure. Cela peut être plus ou moins complexe en fonction du projet, mais cela représente dans tous les cas l'essentiel du travail. L'objectif est de concevoir un robot le plus autonome possible, à savoir qu'il puisse gérer tout éventuel incident lors de son fonctionnement (page inaccessible, contenu formaté différemment, interruption accidentelle de son exécution).
Il nous est parfois possible de réutiliser certaines parties de code, mais la quasi-totalité du robot est conçue en fonction du projet.
Une fois le robot développé, nous lançons souvent son exécution sur un petit jeu de données, afin de valider le résultat avec le client.
Ce résultat validé, nous lançons le robot sur l'ensemble des données à collecter. Cette partie est la plus longue, mais ne nécessite normalement pas (ou très peu) d'intervention humaine, notamment si le robot à été bien conçu.
Dès que l'exécution est terminée, les informations sont vérifiées, et exportées au format souhaité.
Le projet est terminé !
Si le client souhaite des mises à jour, il faudra modifier le robot pour qu'il ne collecte que les nouveaux enregistrements, si cela est techniquement possible, bien sûr.
Domaines d'application
Les domaines d'application sont nombreux, nous allons les détailler ci-dessous.
E-commerce
Le plus souvent, il s'agit de se constituer des listings (véhicules, pièces détachées, livres, etc...) afin d'alimenter la base de données de sites e-commerce.
Nous commercialisons plusieurs bases de données à télécharger répondant aux demandes les plus fréquentes, mais sommes bien évidemment disponibles pour toute collecte sur mesure.
Création de contenu
Dans le cas de sites de contenu, le scraping permet d'alimenter le site en articles (éventuellement spinnés), ou d'aggréger des informations ciblées provenant de différents flux RSS, par exemple.
Citons également le remplissage automatique d'annuaires ou de site de petites annonces, permettant de lancer votre site avec un contenu pré-existant pertinent et exhaustif.
Liste de blogs ou d'emails
Le scraping permet également de constituer un listing de blogs (de type Wordpress, Dotclear, etc...) afin d'y poster des commentaires; et d'adresses e-mails, le tout répondant à des critères (domaines d'intêret) spécifiques.
Pour ce faire, nous commercialisons notre outil de scraping en PHP.
Il va de soi que l'utilisation d'une base d'emails collectée sans consentement est illégale.
Veille tarifaire
La veille tarifaire permet de surveiller le prix des produits sur des sites concurrents (ou sur les sites de ses propres revendeurs, dans le cas d'une marque).
Dans le cas de la concurrence, cette analyse de prix permet un ajustement (automatique ou manuel) de ses propres tarifs afin d'être le plus compétitif possible.
Des alertes peuvent être envoyées, afin d'être le plus réactif possible.
Il est aussi pertinent de surveiller l'évolution des prix, afin d'en dégager et des tendances d'anticiper certaines décisions.
Finance
Le scraping d'indicateurs financiers permet d'analyser en temps réel les différentes données, et donc, tout comme la veille tarifaire, d'être extrèmement réactif afin d'agir au plus vite. C'est l'outil ultime d'aide à la décision.
L'optimisation du code source des robots déployés pour cet usage doit être parfaite, afin de garantir cette rapidité d'exécution.
Le marché des cryptomonnaies (Bitcoin, Etherum...), et notamment la finance décentralisée (DeFi) se trouve particulièrement concerné par le développement de robots (trading bots), permettant, entre autres, d'envoyer des signaux et de prendre, là aussi, des décisions rapides.
Immobilier
Dans un marché particulièrement concurrentiel, il est possible de scanner une multitude de sites afin de trouver la bonne offre, là aussi en étant le plus réactif possible.
Le scan de sites immobiliers est d'autant plus pertinent que les alertes e-mail développées par ces derniers sont en général envoyées avec une fréquence faible (quotidienne), alors qu'on peut obtenir une réactivité de quelques secondes avec un robot sur mesure.
Il est aussi possible de collecter des statistiques, par exemple en terme de prix, ou de taux d'occupation d'un secteur sur de la location courte durée (LCD).
Emploi
Sur le même modèle que la recherche d'un bien immobilier, il est possible de concevoir un robot de recherche d'emploi, ou de collecte d'offres d'emploi afin - par exemple - de les centraliser et d'alimenter un site dédié aux offres d'emploi.
En bref...
Pour résumer, les domaines d'applications des robots de collecte sont quasi-illimités.
N'hésitez pas à nous parler de votre projet, afin de choisir la solution la plus adaptée à votre demande.