Dans le cadre de ma création d’entreprise, j’ai besoin d’avoir des chiffres sur mes potentiels concurrents sans me mettre hors la loi bien sûr. J’ai besoin de savoir par exemple l’évolution en terme de membres / clients, combien de personnes sont connectés de tel heure à tel heure.
Ces outils sont pratique pour se faire une idée sur son marché éventuel et éventuellement faire un peu de veille.
Le temps étant limité, le mieux serait que le tout soit automatisé et qu’à tout moment, je puisse consulter les évolutions de ce que je souhaite mesurer ou comparer.
Le crawl est une technique qui consiste à aspirer une ou plusieurs pages d’un même site dans l’objectif d’en faire une analyse ou un usage ultérieur et ce de manière automatisé.
Les sites de comparateurs de prix utilisent cette technologie de manière plus ou moins avancés afin d’aller récupérer les prix chez les sites partenaires via des pages dédiés ou bien via
Il existe aussi des usages dans les applications de veille sur les sites des concurrents (la partie publique ou privé si vous avez y accès, je ne parle de rien d’illégal bien sûr).
Les moteurs de recherche aussi utilisent des agents qui vont crawler les pages et les analyser.
Il existe plusieurs phases dans le crawl :
La phase d’indexage du site
On parcours le site et on ajoute les différents urls qui correspondent à ce qu’on souhaite (une url qui pointe vers une page membre, une url qui pointe vers un produit, etc…).
La phase de récupération
Il s’agit tout simplement de récupérer le contenu des urls qu’on a récupéré lors de la phase d’indexage du site.
Extraction de données
Il faut à présent extraire de chaque page les données que l’on souhaite. En général, ces données peuvent être délimités grâce des expressions régulières plus ou moins complexe (prévoir de l’aspirine sur certains sites).
Les données sont pour le moment à l’état brut.
Interpréter les données
A ce moment, il peut y avoir intervention humaine ou non. Cela dépend de la complexité de votre projet. Il peut être important de mettre en place une étape de validation semi-automatique où le script mettrait de côté les données qui lui semblent suspectes et qui nécessiteront votre sagesse.
Si vous êtes du genre développeur faignant, un historique de vos modifications manuelles peut être mise en place et qui aidera les fois suivantes l’outil a mieux détecter et traiter les données.
Réconcilier les données
Si vous êtes dans les cas d’un site de comparateurs de prix ou autre, il peut être utile de réconcilier les données avec celle existante par exemple. Cette phase aussi est semi-automatique (du moins je le recommande).
Affichage
Cette phase présente les données de manière à les rendre lisible par l’utilisateur final. Cela peut aller à la génération de graphique sur l’évolution des prix, ou sur l’évolution du nombres de produits proposés ou tout simplement un récapitulatif sur le nombre de pages traités, non traités (erreur 404, etc…), etc..
Bref, vous êtes limité que par votre imagination.
Chaque phase est un module indépendant qui interagit avec l’autre.
Peut-on s’en protéger ?
Dans mes recherches et par rapport à mes besoins, j’ai constaté qu’il est difficilement possible de se protéger d’un crawl. On peut éventuellement limiter les dégâts mais il faut savoir qu’il y a aura toujours un petit malin qui saura détourner votre protection.
La seul protection efficace serait de limiter vos listings (par exemple, limiter le listing des membres à 500 même s’il y en 1000 comme résultats de recherche) mais cela peut être pénalisant pour vos visiteurs, alors à moins que vos données soient sensibles (à ce moment là pourquoi sont-elles publiques ?) il n’y a pas de raisons de craindre un crawl.
Technologies
Je me suis reposé sur PHP + libcurl pour la partie récupération de pages internet, et toujours sur PHP pour la partie analyse et affichage.
Mon projet de veille n’est pas encore terminé mais il est en bonne voie. Je suis interressé par faire un front-end grâce à Adobe AIR mais pour le moment je débute totalement en Flex.
Pour la base de données, MySQL est largement suffisant.
Je posterai des exemples de code un peu plus tard et pourquoi pas certaines parties du projet.
Leave a Reply