On reçoit différemment selon la plateforme, et le résultat tient dans un seul tableau
À la demande d'une entreprise mondiale d'études de marché, nous avons collecté les avis produits sur douze plateformes de distribution majeures d'Amérique du Nord et d'Amérique latine et boutiques en ligne de marques d'électroménager. Comme chaque plateforme fournit ses données à sa manière, nous n'avons pas tout traité avec un seul collecteur : nous avons reçu les données différemment selon les endroits et les avons réunies dans un tableau au même format.
Collecte des données d'avis
Avant
Séparément, à la manière de chaque plateforme
Après
Douze endroits réunis dans un seul tableau au même format
Contexte
Dans les études de marché, les avis produits sont la matière première. Or, la plupart des endroits où se trouvent les avis sont de grandes plateformes de distribution dont les conditions d’accès sont les plus strictes. Même quand la conception de l’étude était prête, on en restait à l’étape de mettre la main sur les données — et cela se répétait.
Ce que nous avons vu sur place
Chaque plateforme fournissait ses données à sa manière. Certaines sont sensibles à l’intervalle entre requêtes, d’autres répondent différemment selon l’environnement de connexion, d’autres encore livrent la zone des avis par une API séparée. Vouloir tout traiter avec un seul collecteur ne tient nulle part de manière stable.
Le problème défini
Nous avons décidé d’utiliser un mode d’entrée différent selon la plateforme, mais de réunir en un seul la purification, la fusion et la sortie qui suivent. Car l’arrêt de la collecte est un problème propre à chaque plateforme, tandis que des formats de résultats disparates sont un problème d’ensemble.
Ce qui a été réalisé
- Moteur de collecte par plateforme — pour les principales plateformes de distribution des États-Unis et du Brésil et les boutiques en ligne des marques d’électroménager, rattaché séparément à la façon dont chaque site fournit ses données
- La valeur ne s’écarte pas même si l’écran change — au lieu de lire l’apparence de certaines plateformes, nous avons directement référencé, via une extension Chrome, les données internes que la page contient déjà
- Répartition des requêtes et collecte parallèle en 3 étapes — les demandes ne sont pas envoyées en rafale depuis un seul point : elles sont reçues par des voies réparties. La conception est documentée pour être reproductible
- Sortie unique — quelle que soit la plateforme, le résultat tombe dans un tableau au même format
Ce qui a été bloqué
Les choses qui se produisent réellement au cours d’une collecte qui dure plusieurs jours ont été traitées dans le code, et 26 vérifications ont confirmé qu’elles fonctionnent comme prévu.
- Reprise après interruption — on reprend à partir de la plus petite valeur entre le point de progression sauvegardé et le nombre réellement accumulé. Découvrir plus tard des données manquées coûte plus cher que recevoir en double
- Déduplication à la fusion — on fusionne par identifiant unique. Les données déjà reçues restent intactes
- Bascule de voie — si aucune réponse n’arrive, ou si une réponse au format cassé arrive, on change de voie et on continue à partir de ce point
- Les données au format divergent ne s’accumulent pas dans le tableau — si la valeur reçue ne correspond pas au format attendu, elle est filtrée sur place
- Limitation automatique du parallélisme — si la valeur spécifiée est excessive, le système la réduit lui-même. Ne pas envoyer en rafale est le chemin qui mène une collecte de plusieurs jours jusqu’au bout
Résultats
Même avec douze plateformes, le résultat sort dans un seul tableau au même format. Comme les colonnes ne changent pas selon l’origine des données, on les utilise telles quelles comme données d’analyse, sans étape de remise en forme. Si une cible s’ajoute, ce qui s’ajoute est uniquement le mode d’entrée de cette plateforme ; la purification, la fusion et la sortie qui suivent ne sont pas touchées.
D’autres travaux réalisés de la même manière sont rassemblés sous Collecte de données web.
Sources des faits
Contrat de prestation externalisée