Suivre les prix des supermarchés
- En décembre 2022, un site web a été créé pour suivre les variations de prix de trois grandes chaînes de supermarchés en Grèce.
- Ce processus a nécessité de résoudre plusieurs problèmes et a permis d’en tirer de nombreux enseignements.
Scraping de sites JavaScript
- Le principal problème venait des sites web rendus en JavaScript.
- Playwright a été utilisé pour contrôler un navigateur web de manière programmatique.
- Playwright prend en charge les navigateurs Chromium, Safari et Firefox, et peut être utilisé avec Node, Java, .NET et Python.
- Du code a été écrit pour gérer le défilement infini et extraire les informations produit.
Automatisation
- Sur un MacBook Pro M1, il fallait entre 50 minutes et 2 h 30 pour scraper l’ensemble des supermarchés.
- C’était bien pour le développement et les tests, mais une solution plus pérenne était nécessaire.
Utiliser un vieil ordinateur portable ?
- Un ancien ordinateur portable de 2013 a été essayé, mais les performances se sont révélées très décevantes.
Utiliser le cloud ?
- AWS était trop cher, et Hetzner était bien moins coûteux.
- La décision a été prise d’utiliser un serveur Hetzner.
Utiliser à la fois un vieil ordinateur portable et le cloud !
- Le scraping a été automatisé sur un serveur cloud, et l’ancien ordinateur portable a servi de serveur CI.
- Un pipeline a été configuré avec Concourse pour exécuter le scraping chaque jour.
Contourner les restrictions d’IP
- À cause des règles de pare-feu Akamai, les requêtes provenant d’adresses IP non résidentielles étaient bloquées.
- Tailscale a été utilisé pour faire apparaître les requêtes comme provenant de l’adresse IP du domicile.
Causes et moment des échecs
- Un projet de scraping est affecté par le travail des développeurs du site web.
- Deux types d’échec : les breaking changes et les changements non bloquants.
- Il est important d’obtenir rapidement du feedback.
Optimisation
- Divers travaux d’optimisation ont été menés, notamment des alertes par e-mail, l’hystérésis, des timeouts et des paramètres de retry.
- Les performances ont été améliorées en utilisant un serveur plus puissant et en réduisant les fetches de données.
Coûts
- Le coût d’utilisation d’un serveur chez Hetzner était très faible.
- Le free tier de Cloudflare R2 a permis de réduire les coûts de stockage des données.
Conclusion
- Les principaux composants d’un pipeline de scraping destiné à suivre les variations de prix dans les supermarchés sont présentés.
Résumé de GN⁺
- Cet article partage un retour d’expérience sur l’utilisation de Playwright et de services cloud pour suivre les variations de prix dans les supermarchés.
- Il explique comment scraper des sites web rendus en JavaScript, ainsi que les méthodes d’automatisation et d’optimisation.
- Il décrit comment réduire les coûts et contourner les restrictions d’IP à l’aide de Hetzner et Tailscale.
- Cet article peut être utile aux personnes intéressées par le web scraping et l’automatisation.
1 commentaires
Avis Hacker News
Partage d’expérience sur des problèmes similaires
Projet similaire en cours en Nouvelle-Zélande
Création d’un site similaire qui a suscité beaucoup d’intérêt
Possibilité de monopole des deux principales chaînes de supermarchés australiennes via des algorithmes d’IA d’analyse des prix
Actif sur le marché suédois depuis plus de 8 ans
Avec plus de transparence sur les prix, le suivi serait plus facile
Comment faire des changements sans faire échouer le scraper
Partage d’une expérience de suivi des prix lors d’un déménagement dans une nouvelle région
Le plus difficile n’est plus le scraping, mais le contournement de blocages de plus en plus sophistiqués
Problème du rendu côté client en JavaScript