Passer au contenu

Pourquoi vous devez surveiller les projets de scraping à grande échelle et de longue durée (et comment le faire correctement)

Bonjour!

Si vous exécutez des projets de scraping Web à grande échelle qui extraient des données de milliers, voire de millions de pages par jour, vous avez probablement rencontré des problèmes qui ont causé des maux de tête. Le scraping à grande échelle comporte des défis et des pièges uniques qui peuvent saboter la qualité de vos données ou vous faire perdre du temps et des ressources informatiques.

La bonne nouvelle est qu’une surveillance attentive de vos grattoirs peut vous aider à éviter et à résoudre rapidement de nombreux problèmes courants. Dans ce guide, je partagerai les principaux problèmes qui surviennent dans les grands projets de scraping, sur la base de mes 5 années d'expérience en tant qu'expert en web scraping. J'ai été témoin de ces problèmes en gérant des scrapers qui extraient des millions de points de données par jour.

Je vous fournirai également mes meilleures pratiques recommandées pour surveiller vos grattoirs afin d'assurer leur bon fonctionnement. En mettant en œuvre la journalisation, le suivi des métriques, les alertes et bien plus encore, vous pouvez rester au top de vos scrapers et vous assurer qu'ils fournissent des données opportunes et de haute qualité.

Commençons!

Pourquoi surveiller vos projets de web scraping ?

Avant d'aborder les problèmes spécifiques que la surveillance permet d'éviter, il est important de comprendre why la surveillance est si essentielle pour le grattage à grande échelle.

Plus de données signifie plus de problèmes potentiels

Lorsque vous extrayez des milliers ou des millions de points de données à partir de centaines ou de milliers de pages, il y a tout simplement davantage de risques que quelque chose se passe mal. Voici quelques problèmes potentiels :

  • La mise en page du site Web change, brisant votre scraper
  • Votre IP est bloquée temporairement
  • Les erreurs de serveur ou les pannes de réseau perturbent le scraping
  • Les données sont analysées ou formatées de manière incorrecte

Avec un scraping à petite échelle, vous pourrez peut-être repérer ces types de problèmes manuellement. Mais à grande échelle, ces échecs passent facilement inaperçus. Sans surveillance, vous ne saurez pas que vos données sont incomplètes ou inexactes.

L'utilisation des ressources s'additionne

Scraper des millions de pages signifie que vous exécutez probablement des dizaines ou des centaines de processus de scraping simultanément. Chaque processus consomme des ressources informatiques telles que la mémoire, le processeur et la bande passante.

Selon une analyse, un scraper extrayant des données de 1,000 XNUMX pages par minute aurait besoin de :

  • 4 Go de RAM
  • Cœurs de processeur 4
  • 5 Mbps de bande passante

Ainsi, un grand scraper fonctionnant sur plusieurs serveurs pourrait facilement brûler des téraoctets de bande passante par mois et des milliers d'heures de calcul.

Une surveillance minutieuse vous aide à fournir les ressources adaptées à vos besoins de scraping et à éviter les excédents ou les pannes.

La qualité des données est essentielle

Pour la plupart des scrapers, l’objectif final est de disposer de données opportunes et de haute qualité. Mais les problèmes de qualité des données deviennent de plus en plus probables à grande échelle :

  • Selon une enquête, 60 % des entreprises déclarent que la mauvaise qualité des données entraîne une perte de revenus.
  • Des données inexactes ou obsolètes réduisent la confiance et la fiabilité
  • Les données manquantes ou incomplètes laissent des lacunes dans l'analyse

En surveillant vos scrapers, vous pouvez rapidement détecter tout problème de qualité des données et les corriger avant qu'ils n'aient un impact sur les analyses et les décisions en aval.

Méfiez-vous de ces problèmes courants de web scraping

Dans les sections suivantes, j'aborderai certains des problèmes et des échecs les plus fréquents que je constate dans les grands projets de web scraping, ainsi que la manière dont la surveillance permet de les minimiser et de les résoudre.

Modifications du site Web en cassant les scrapers

Il s’agit de loin du problème le plus courant dans toute opération de grattage de longue durée. Au fil du temps, les sites modifient inévitablement la structure et la mise en page de leurs pages d'une manière qui peut briser les scrapers conçus pour l'ancienne conception.

Selon une analyse de plus de 50 millions de pages Web :

  • En moyenne, les pages changent tous les 58 jours
  • 93 % des pages changent en un an

Ce n'est donc pas une question de if vos sites cibles vont changer – c'est quand. Faute de surveillance, votre grattoir cessera soudainement de fonctionner sans raison claire.

En suivant les taux d'erreur et les volumes de données, vous pouvez immédiatement remarquer une baisse inattendue et étudier les modifications potentielles du site. Par exemple, un ensemble de messages de journal comme celui-ci signalerait un problème potentiel :

10:05 AM - Extracted 550 items 
10:35 AM - Extracted 0 items
10:45 AM - 0 items extracted

Vous pouvez ensuite consulter manuellement les pages et mettre à jour votre scraper en conséquence. De nombreux services de scraping commerciaux incluent également la détection des modifications pour signaler automatiquement les modifications du site.

Je recommande également de revérifier périodiquement les scrapers sur les sites sujets à des mises à jour fréquentes. Pour les sites qui changent toutes les 2 à 4 semaines, une nouvelle vérification mensuelle peut détecter les changements de mise en page avant qu'ils ne cassent votre grattoir.

Être bloqué par des sites Web

En tant qu'expert en web scraping, je suis sûr que vous êtes habitué à être bloqué ou mis sur liste noire par des sites. Il s’agit d’un autre casse-tête extrêmement courant à grande échelle.

Plus les requêtes que vous envoyez à un domaine sont importantes, plus elles sont susceptibles de recourir au blocage. Les signes courants indiquant que vous avez été bloqué incluent :

  • Erreurs HTTP 403
  • CAPTCHA apparaissant
  • Absence totale de réponse du serveur

Les blocs peuvent être au niveau IP unique ou s’appliquer à l’ensemble du site. Une seule adresse IP atteignant des centaines de pages par minute est un signal d’alarme instantané pour de nombreux sites. Les opérations de scraping à grande échelle utilisent souvent des milliers de proxys IP résidentiels pour éviter des blocages à grande échelle.

Mais les proxys ne constituent pas une solution complète, car des adresses IP individuelles peuvent toujours être bloquées. En suivant les codes de réponse et les taux d’erreur, le blocage devient évident :

10:00 AM - 0 errors, 200 pages scraped
10:15 AM - 403 errors on 50% of requests 
10:30 AM - 100% errors, 0 pages scraped

Au premier signe de blocage, vous pouvez alterner différents proxys et adresses IP pour minimiser les perturbations. Je recommande également de limiter légèrement vos demandes si vous constatez des blocages fréquents. Même si attendre quelques secondes supplémentaires entre les requêtes sacrifie une certaine vitesse, cela réduit considérablement les taux de blocage d'après mon expérience.

Problèmes d’analyse et de qualité des données

Même si votre scraper fonctionne sans erreur, les données extraites peuvent toujours présenter de sérieux problèmes de qualité :

  • Champs manquants
  • Données partielles ou mal formées
  • Données dupliquées ou obsolètes
  • Données mal formatées

Les petits bugs d’analyse peuvent passer inaperçus mais devenir de sérieux problèmes à grande échelle. Un taux d'erreur de données de seulement 2 % sur un million d'enregistrements signifie 1 20,000 mauvais enregistrements !

En enregistrant un échantillon de données extraites, vous pouvez l'examiner manuellement pour déceler tout problème d'analyse. Par exemple:

Record 1:
   Name: Jane Doe 
   Location: Springfield
   Phone: 555-1234

Record 2:  
   Name: 
   Location: Springfield, VA  
   Phone:

Dans l'exemple ci-dessus, l'enregistrement 1 semble propre tandis que l'enregistrement 2 ne contient pas le nom et le téléphone. Vous souhaiteriez corriger rapidement les bogues à l’origine de ces problèmes de qualité des données.

Vous devez également enregistrer des avertissements pour tout échec d'analyse, erreur HTTP et autre anomalie afin qu'ils puissent être corrigés :

WARN: Failed to parse phone number for page https://www.site.com/john-smith 

La définition de plages de valeurs attendues peut également aider à détecter les valeurs aberrantes qui signalent des problèmes :

WARN: Parsed price of $987,543 on page https://www.site.com/product-1. Expected max of $2,000.

En étant rigoureux sur la qualité des données dès le départ, vous bénéficiez en aval de données propres et fiables.

Erreurs de serveur et pannes inattendues

Les serveurs, les réseaux, les API et les sites Web peuvent tous subir des pannes sporadiques qui perturbent le scraping. Ceux-ci peuvent provenir de choses telles que :

  • Le trafic de pointe surcharge les serveurs
  • Pannes de base de données
  • Pannes d’infrastructure en cascade

Selon une analyse, un site Web connaît en moyenne 2.5 pannes par mois, la panne moyenne durant 107 minutes.

Les Scrapers rencontrant ces problèmes enregistreront une série de délais d'attente, 500 erreurs, échecs de connexion et autres avertissements :

WARN: Timeout contacting server after 30,000 ms

ERR: API call failed with 500 Server Error

ERR: Connection refused by 35.231.12.167 

Sans surveiller ces erreurs, vous pourriez manquer des pans entiers de données lors de pannes. Mais détecter rapidement les erreurs vous permet de réessayer ou de suspendre le scraping en cas de pannes majeures.

Dans certains cas, vous souhaiterez peut-être déclencher immédiatement des alertes afin que les problèmes puissent être résolus dès que possible. Si votre entreprise s'appuie sur des données récupérées en temps quasi réel, les pannes nécessitent une réponse urgente.

Utilisation excessive des ressources et coûts

En fonction de votre infrastructure, le web scraping peut rapidement consommer des ressources informatiques conséquentes. Les scrapers fonctionnant sur des plates-formes cloud comme AWS peuvent accumuler de lourdes factures :

  • Utilisation élevée de la mémoire/du processeur
  • Utilisation importante de la bande passante
  • Augmenter constamment les serveurs

J'ai vu des entreprises dépenser des milliers de dollars supplémentaires par mois en dépassant les besoins en ressources projetés. Une surveillance attentive de l'utilisation permet de redimensionner vos serveurs.

Par exemple, vous pouvez suivre des métriques telles que :

  • Utilisation maximale du processeur : 85 %
  • Utilisation maximale de la mémoire : 7.2 Go
  • Bande passante mensuelle : 18 To

Si l'utilisation maximale ne dépasse jamais 50 % des ressources, vous pouvez probablement réduire vos serveurs pour réaliser des économies.

La surveillance des pics d'utilisation permet également de détecter les grattoirs ou les boucles incontrôlables consommant trop de ressources. Si l’utilisation du processeur sur un serveur passe soudainement de 40 % à 90 %, cela justifie une enquête.

Bonnes pratiques pour surveiller les projets de scraping

Maintenant que vous connaissez les principaux problèmes que la surveillance permet d’éviter, discutons de quelques bonnes pratiques pour mettre en place la surveillance.

Basé sur la gestion de tonnes de projets de scraping à grande échelle, je recommande une combinaison de :

  • Journalisation structurée
  • Suivi des performances
  • La gestion des erreurs
  • Alertes
  • Échantillonnage des données

Ensemble, ils vous offrent une visibilité essentielle sur les opérations et les données de vos scrapers.

Journalisation structurée

La journalisation structurée signifie conserver des journaux détaillés non seulement des erreurs, mais également des mesures et étapes clés pendant le fonctionnement normal. Quelques éléments clés à enregistrer :

Statistiques par scraper :

  • Pages grattées
  • Éléments extraits
  • Erreurs

Données par page :

  • URL
  • Code d'état HTTP
  • Temps écoulé
  • Données extraites

Statistiques mondiales :

  • Pages globales grattées
  • Heures de début/fin
  • Tout redémarrage

Les journaux doivent fournir tous les détails clés tels que les URL et les horodatages. Évitez les journaux vagues comme « Échec du grattage ! »

Je recommande également de consigner un échantillon d'enregistrements entièrement extraits, ce qui permet de vérifier ponctuellement la qualité des données.

Enfin, utilisez des niveaux de gravité uniques tels que INFO, WARN et ERROR afin de pouvoir filtrer par gravité.

Suivi des performances

En plus de la journalisation, suivez de près les indicateurs clés de performances et de ressources tels que :

  • l'utilisation du processeur
  • Utilisation de la mémoire
  • Bande passante utilisée
  • Latence du grattoir
  • Erreurs et taux de blocage

Recherchez les pics, les creux ou les anomalies et enregistrez ces événements pour analyse. Par exemple, une latence qui augmente soudainement justifie probablement une enquête.

Idéalement, collectez des métriques à la fois au niveau du système et au niveau de chaque scraper. Cela permet d’isoler tous les scrapers spécifiques consommant des ressources excessives.

Gestion rigoureuse des erreurs

Codez vos scrapers pour détecter et gérer toutes les erreurs possibles et tous les cas extrêmes, notamment :

  • Erreurs HTTP comme 404 ou 503
  • Échecs de connexion
  • Erreurs de délai d'attente
  • Données invalides ou mal formées
  • Demandes bloquées

Chaque type d'erreur doit :

  1. Soyez connecté pour analyse, idéalement avec l’URL du problème.
  2. Déclenchez une logique de nouvelle tentative appropriée – par exemple, reculez après des blocages.
  3. Si les échecs persistent, relancez-le pour un examen manuel.

L'analyse des tendances des erreurs permet d'identifier et de résoudre les problèmes persistants.

Assurez-vous de gérer les erreurs inattendues en toute sécurité en ignorant et en enregistrant, plutôt que de planter complètement. Un crash fait perdre le travail en cours et nécessite des redémarrages compliqués.

Notifications et alertes intelligentes

Configurez des notifications en temps réel pour être informé des problèmes dès qu'ils surviennent. Les notifications courantes incluent :

  • Alertes par e-mail pour les nouvelles erreurs critiques
  • Alertes Slack ou SMS en cas de panne du scraper
  • Notifications lorsque les scrapers terminent leurs exécutions

Hiérarchisez et faites remonter les alertes les plus importantes – par exemple, envoyez des SMS aux développeurs concernant les pannes critiques. Pour les notifications de moindre priorité telles que les redémarrages du scraper, Slack ou l'e-mail peuvent suffire.

Vous pouvez également suivre des mesures clés telles que l'utilisation du processeur du serveur et recevoir des alertes lorsqu'elles dépassent les seuils. Cela permet de détecter des problèmes tels que des serveurs sous-provisionnés.

Essayez d'être informé des problèmes dans un délai de 0 à 60 minutes pour une réponse la plus rapide.

Échantillonnage et contrôle des données

Enfin, examinez périodiquement des échantillons de vos données récupérées pour vérifier la qualité.

Les examens manuels complètent la surveillance automatisée pour détecter les problèmes qui passent entre les mailles du filet.

Donnez la priorité à l’examen des échantillons provenant de tout nouveau site ou de tout grattoir récemment modifié. Les scrapers bogués peuvent produire des données erronées pendant des jours avant que vous ne remarquiez des tendances analytiques étranges.

Vous devez également examiner au hasard 1 à 2 % des enregistrements provenant de scrapers bien établis pour détecter les régressions.

Pour des milliards d’ensembles de données d’enregistrement, il n’est pas pratique d’examiner chaque entrée. Mais un échantillonnage de 1 à 2 % permet de détecter les bogues d'analyse potentiels tout en maintenant une qualité de données élevée.

Points clés à retenir pour surveiller le succès du scraping

Pour conclure, voici mes principales recommandations pour surveiller et maintenir des projets de scraping à grande échelle :

Commencer du bon pied – Testez et validez d’abord les scrapers sur de petits volumes de données. Confirmez qu’ils collectent correctement les données avant de passer à l’échelle.

Connectez-vous rigoureusement – Enregistrez les mesures clés, les erreurs et les échantillons de données pour détecter les problèmes rapidement.

Gérer les erreurs – Utiliser une gestion complète des erreurs et des tentatives pour minimiser les perturbations.

Surveiller de manière proactive – Surveillez les anomalies de performances et les tendances indiquant des problèmes.

Soyez alerté – Configurez les notifications pour réagir immédiatement aux échecs de scraping ou aux erreurs de données.

Examiner des échantillons – Vérifiez manuellement des échantillons de données aléatoires pour confirmer la qualité.

Répéter – Utilisez les informations de surveillance pour améliorer constamment les scrapers.

Aucun grattoir n’est parfait, surtout à grande échelle. Mais en suivant ces étapes, vous pouvez détecter rapidement les problèmes et assurer le bon fonctionnement de vos pipelines de données. Les problèmes de grattage deviennent alors de petites bosses plutôt que de gros maux de tête !

Faites-moi savoir si vous avez d'autres questions sur les meilleures pratiques de scraping à grande échelle. Je suis toujours heureux d'aider mes collègues développeurs. Restez décousu !

Prendre part à la conversation

Votre adresse email n'apparaitra pas. Les champs obligatoires sont marqués *