Retour au blog
Les techniques de web scraping
Anda MiuțescuLast updated on Apr 10, 202614 min read

La liste ultime des astuces et conseils pour le web scraping

La liste ultime des astuces et conseils pour le web scraping

Même si le web scraping peut sembler simple en théorie, il recèle de nombreux pièges dans lesquels un développeur novice pourrait tomber. Plutôt que de procéder par force brute jusqu’à épuiser tous vos proxys non bannis, j’ose penser qu’il vaudrait mieux procéder de manière intelligente : récupérer les données dont vous avez besoin et vous retirer sans jamais vous faire repérer.

La vraie question est : comment s'y prendre ? Comment obtenir des informations sans se faire bloquer son IP, sans se heurter à des CAPTCHA, sans récupérer du code JavaScript inutile et sans passer son temps à modifier le code du scraper ? Eh bien, il n'y a pas de règle d'or à suivre, mais il existe des bonnes pratiques.

Nous avons préparé douze conseils pour vous. Utilisez-les et vous verrez que toutes les données d'Internet ne sont qu'à quelques clics.

1. Planifiez avant de scraper

Comme pour tout projet, les tâches de web scraping sont beaucoup plus faciles si vous élaborez une stratégie claire avant même de commencer. Tout d’abord, pourquoi avez-vous besoin de données ? La question peut sembler évidente, mais la réponse est essentielle pour déterminer quelles informations vous devez collecter.

Ensuite, où allez-vous trouver ces informations ? L'outil de scraping doit être bien adapté aux sites qu'il doit consulter ; l'examen de vos sources de données vous aidera donc à créer ou à acheter le programme adapté à la tâche.

Troisième question : comment allez-vous utiliser les informations recueillies ? Vous pouvez les traiter vous-même, utiliser un logiciel ou même les acheminer via un pipeline complexe. La réponse à cette question constituera la première étape pour déterminer la structure et le format de fichier des données recueillies.

Il y a beaucoup d'autres questions et idées à clarifier, dont la plupart dépendent fortement de ce que vous souhaitez accomplir. Une chose est sûre : « Mesurer deux fois, couper une fois » s'applique parfaitement au web scraping.

2. Agissez de manière plus humaine

Si vous voulez savoir si un visiteur d’un site web est un humain ou un bot, il vous suffit d’observer son comportement. Les bots se déplacent à la vitesse de l’éclair et n’interagissent jamais avec la page, sauf instruction contraire. Ils sont donc faciles à repérer et à bloquer.

Pour aider le scraper à éviter la détection, vous devez lui apprendre à se comporter davantage comme un visiteur normal, c'est-à-dire comme un humain. L'avantage ici est que les gens agissent de toutes sortes de façons différentes, ce qui vous laisse une grande liberté lors du codage. Voici quelques actions que nous vous suggérons d'ajouter :

  • Ajoutez des intervalles aléatoires d'inactivité, comme si un humain lisait le contenu de la page. Un délai de 5 à 10 secondes fonctionne très bien.
  • Naviguez entre les pages selon une structure arborescente. Si vous explorez plusieurs pages enfants, passez toujours par la page parente avant de passer à la suivante. Cela imitera une personne qui clique sur une page, revient en arrière, puis clique sur la suivante, et ainsi de suite.
  • Faites en sorte que le bot clique de temps en temps sur des éléments au hasard. C'est quelque chose que tout le monde fait, pas seulement moi, n'est-ce pas ?

Quoi qu'il en soit, la raison pour laquelle votre bot doit se comporter d'une certaine manière est que le site web pourrait surveiller et enregistrer son activité. Mais que se passerait-il si le site web ne parvenait pas à suivre le bot ? Lisez le point suivant pour obtenir la réponse.

3. Alternez vos proxys

Utiliser un proxy pour éviter que votre adresse IP réelle ne soit bloquée est une évidence. Il en va de même pour l'utilisation d'un proxy situé dans une zone géographique spécifique afin d'accéder à du contenu soumis à des restrictions géographiques. Mais les proxys peuvent vous offrir bien plus encore avec les bons outils !

À l'heure actuelle, l'outil dont vous avez besoin est un serveur permettant de faire tourner votre pool de proxys. Grâce à lui, chaque requête que vous envoyez est attribuée à une adresse IP aléatoire du pool et transmise à la cible. Ainsi, vous pouvez scraper un site web autant que vous le souhaitez et chaque requête semblera provenir d'un endroit et d'une personne différents.

De plus, la rotation des proxys garantit que si une adresse IP venait à être bloquée, vous ne seriez pas bloqué jusqu’à ce que vous changiez manuellement de proxy. Une requête peut échouer, mais les autres ne le feront pas. Un bon outil réessaiera également toute tentative ayant échoué ; par exemple, WebScrapingAPI réessaie les appels API ayant échoué pour s’assurer qu’il n’y a pas de lacunes dans votre base de données.

Pour obtenir les meilleurs résultats possibles, il est préférable d'utiliser des proxys résidentiels rotatifs. Les adresses IP résidentielles sont les moins susceptibles d'être repérées ou bloquées et, en les faisant tourner, vous rendez le scraper encore plus difficile à détecter. Gardez à l'esprit que cela peut parfois être excessif. Si vous n'êtes pas confronté à des mesures anti-bot complexes, les proxys rotatifs de centre de données peuvent tout aussi bien faire l'affaire, à moindre coût.

4. Utilisez un navigateur sans interface graphique

Un navigateur sans interface graphique est identique à un navigateur normal, à l'exception qu'il ne dispose pas d'interface utilisateur graphique. Pour naviguer sur le Web avec un tel navigateur, vous devrez utiliser une interface en ligne de commande.

Vous devriez absolument ajouter un navigateur sans interface graphique à votre pipeline de web scraping, et les sites web dynamiques en sont la raison. De nombreux sites utilisent aujourd’hui du JavaScript pour offrir une meilleure expérience utilisateur aux visiteurs. L’exemple le plus simple est le redimensionnement des éléments de la page pour qu’ils s’adaptent bien à la résolution d’écran du visiteur.

Le problème est que le précieux code HTML est masqué derrière le code JavaScript. Pour y accéder, vous devez exécuter le code JS. Un scraper classique ne peut pas le faire, mais tous les navigateurs le peuvent.

Ainsi, sans environnement de navigateur, l'outil de scraping ne pourra pas collecter de données sur les sites web utilisant du JavaScript, ce qui est le cas de la plupart d'entre eux à l'heure actuelle, ou du moins de la plupart de ceux qui comptent.

Si vous développez un scraper à partir de zéro, je vous recommande d'essayer Puppeteer. Voici quelques détails sur son fonctionnement et son utilisation.

5. Alternez les en-têtes User-Agent

User-Agent est le nom d'un en-tête de requête HTTP qui indique au site web que vous visitez quel navigateur et quel système d'exploitation vous utilisez. D'une certaine manière, les sites web utilisent cet en-tête pour en savoir plus sur les personnes qui les visitent. C'est très utile pour l'analyse et, accessoirement, pour détecter les bots.

Voici à quoi peut ressembler une chaîne d'agent utilisateur :

Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0

Il y a trois scénarios principaux que vous devez éviter :

  • Ne pas avoir d'agent utilisateur du tout. La plupart des scrapers n'en utilisent pas, ce qui est suspect et constitue un bon moyen de révéler qu'il s'agit de bots. Assurez-vous d'envoyer des en-têtes d'apparence normale à chaque requête.
  • Avoir un user-agent obsolète. À chaque nouvelle mise à jour, les navigateurs modifient généralement l'en-tête. Ainsi, si votre liste contient un user-agent pour Mozilla mais que celui-ci a été mis à jour et modifié, le site web que vous visitez peut détecter qu'il y a quelque chose de louche.
  • Utiliser le même en-tête pour chaque requête. Vous pourriez utiliser l'agent utilisateur normal de votre navigateur actuel, mais cela entraînerait des centaines de requêtes différentes, provenant d'adresses IP différentes mais ayant exactement la même empreinte. C'est un indice énorme.

Voici un conseil bonus à ce sujet : essayez d'utiliser l'agent utilisateur Googlebot. Bien sûr, tout site web souhaite être indexé, donc il laisse les robots d'exploration de Google faire leur travail. Mais attention : leurs robots ont également des adresses IP et des comportements spécifiques, donc l'agent utilisateur seul n'est pas une garantie de succès.

6. Ajoutez des fonctionnalités anti-CAPTCHA

Si vous effectuez correctement votre scraping, vous ne devriez rencontrer des CAPTCHA que très rarement. Néanmoins, si c'est le cas, c'est très gênant car cela pourrait bloquer votre scraper ou renvoyer de fausses données (le code de la page CAPTCHA).

Le plan de bataille anti-CAPTCHA comporte deux volets : la prévention et le traitement. Vous devriez vous concentrer principalement sur la prévention, car c'est de loin l'option la plus efficace. Voici ce que vous devriez faire :

  • Utilisez des proxys pour donner l'impression que vos requêtes proviennent de différentes sources.
  • Modifiez vos en-têtes de requête (en particulier l'agent utilisateur). Sinon, vous risquez d'être détecté malgré l'utilisation de plusieurs adresses IP.
  • Exécutez le code JavaScript de la page. Un navigateur sans interface graphique est votre meilleure option. De nombreux sites affichent des CAPTCHA à tout visiteur qui ne le fait pas, car il s'agit d'un comportement inhabituel.

En résumé, suivez les conseils n° 3, 4 et 5.

Si le scraper rencontre encore des problèmes, vous aurez besoin d'un solveur de CAPTCHA. Lorsque vous choisissez un outil de web scraping, assurez-vous que celui-ci intègre cette fonctionnalité. Sinon, il est techniquement possible d'intégrer vous-même un solveur, mais cela implique du codage supplémentaire et une perte de temps. Pour votre information, notre API dispose de cette fonctionnalité, même si elle ne rencontre pas beaucoup de CAPTCHAs au départ.

7. Créez une liste d'URL

Lorsque vous lancez une tâche de scraping, vous allez probablement compiler une liste d'URL contenant des informations précieuses. Voici une idée : au lieu de simplement envoyer les URL au scraper, conservez une liste et marquez tous les liens que vous avez déjà explorés. Pour plus de clarté, vous pouvez également conserver les données extraites avec l'URL.

La raison est simple : si votre ordinateur tombe en panne ou qu’un autre événement imprévu survient, vous saurez toujours quelles données vous possédez déjà, ce qui vous évitera un re-scraping inutile.

Notre conseil est d'écrire un script pour la gestion des enregistrements d'extraction de données. Mettre à jour la liste manuellement représente beaucoup de travail fastidieux et vous ne pourrez de toute façon pas suivre le rythme du bot.

8. Apprenez à connaître la structure des pages

Collecter davantage de données prend naturellement plus de temps. Ainsi, un moyen d'améliorer l'efficacité consiste à identifier précisément les informations que le scraper doit récupérer. Facile en théorie, mais chaque site web et chaque page web sont uniques. Pour réduire la charge de travail et gagner du temps, vous devez vous familiariser avec la structure de vos pages cibles.

Voici comment procéder :

  • Accédez à la page ;
  • Cliquez avec le bouton droit sur le texte souhaité et sélectionnez « Inspecter l'élément » ;
  • Notez comment ces informations sont imbriquées, dans quelles classes elles se trouvent et sous quelle balise ;
  • Recherchez des schémas structurels parmi les autres pages qui vous intéressent. Il y a de fortes chances que vous puissiez créer un script qui rassemble toutes les informations nécessaires sur l'ensemble du site web.

Une fois ces étapes franchies, il vous sera beaucoup plus facile d'extraire uniquement les détails dont vous avez besoin. L'avantage est que vous n'aurez plus à gérer du code HTML non pertinent qui encombre vos documents.

Comprendre la mise en page est particulièrement utile pour extraire des informations sur les produits. Les pages de produits d'un même site web auront toutes une structure similaire, voire identique. Trouvez la logique et vous pourrez extraire et analyser les données beaucoup plus rapidement.

9. Ajoutez un délai entre les requêtes

Le but d'un scraper web est de collecter des données plus rapidement qu'un humain ne le pourrait. Nous le comprenons, mais la vitesse a un effet secondaire indésirable : elle montre clairement que les requêtes sont envoyées par un bot.

Rappelez-vous ce que nous avons dit sur le fait de se comporter comme un visiteur normal : si le scraper se fait remarquer, il risque fort d'être bloqué. Mais ne vous inquiétez pas, il vous suffit d'ajouter des délais aléatoires lorsque vous utilisez la même adresse IP pour plusieurs visites simultanées ou successives.

N'oubliez pas : faites cela lorsque vous utilisez le même proxy. Si vous changez d'adresse IP et d'en-têtes après chaque requête, le délai ne devrait pas être nécessaire. Si vous êtes connecté avec une adresse IP, cependant, vous devriez vous en tenir à celle-ci, ce qui signifie que vous aurez également besoin de ces délais.

Assurez-vous que le délai soit légèrement différent, afin que les délais soient aléatoires. Un délai compris entre 5 et 10 secondes devrait bien fonctionner.

10. Mettez en cache les pages importantes

Dans certains cas, vous souhaiterez revisiter des pages que vous avez déjà scrapées afin d'obtenir des informations supplémentaires. Au lieu de cela, mettez la page en cache lors de la première visite et vous disposerez ainsi de toutes les données déjà enregistrées.

Même avec le scraper web le plus avancé, il y a toujours un risque que le bot ne récupère pas les données du premier coup, et même s’il y parvient, vous gaspilleriez quand même de l’énergie. Contentez-vous de récupérer tout le code HTML en une seule fois, puis vous pourrez extraire toutes les informations dont vous avez besoin à partir de la version enregistrée.

Par exemple, vous pouvez mettre en cache une page produit afin qu'elle soit toujours à portée de main. Si vous avez besoin des spécifications du produit aujourd'hui, mais que demain vous souhaiteriez connaître son prix, les données sont déjà collectées et n'attendent plus qu'à être traitées.

Attention toutefois, cela ne fonctionne que pour les informations statiques ! Si vous souhaitez obtenir les cours de la bourse, vous devrez continuer à extraire des données à jour, car la version mise en cache deviendra rapidement obsolète.

11. Soyez prudent lorsque vous vous connectez

Les données dont vous avez besoin peuvent être cachées derrière une page de connexion. On pense notamment aux plateformes de réseaux sociaux. Bien sûr, vous pouvez récupérer quelques bribes de contenu sans compte, mais c’est plus laborieux et vous pourriez vouloir accéder à quelque chose qui n’est visible que si vous faites partie d’un groupe ou d’une liste d’amis. En bref, vous devrez peut-être vous connecter, ce qui pose certains problèmes.

Tous les utilisateurs d'un site web disposant d'un compte doivent accepter ses conditions d'utilisation. Ces conditions peuvent comporter une clause interdisant spécifiquement l'utilisation de bots, d'outils automatisés ou de web scrapers. Dans ce cas, l'extraction de données serait clairement contraire aux règles que l'utilisateur a acceptées.

Un autre point à garder à l'esprit est que, même si les sites web ne sont pas forcément très attentifs aux visiteurs non enregistrés, ils accordent davantage d'attention aux cookies envoyés par les utilisateurs connectés. Ainsi, en substance, votre bot sera davantage surveillé. Un comportement de bot évident ou des cookies révélateurs sont encore plus susceptibles de faire bloquer votre scraper.

Ce que vous devez faire :

  • Lisez attentivement les conditions d'utilisation et assurez-vous de ne pas les enfreindre.
  • Assurez-vous de suivre tous les autres conseils de cet article, en particulier ceux concernant les proxys, le comportement humain, le rendu JS et les en-têtes de requête.

12. Évitez de causer des dommages au site web

La plupart des administrateurs web n'apprécient pas la présence de scrapers sur leurs sites. Pour certains, les bots sont une nuisance mineure, pour d'autres, ils constituent un danger majeur. Le fait est que les hackers et autres malfaiteurs utilisent des bots pour causer des problèmes et des dégâts, comme faire planter des sites web ou tenter de voler des données confidentielles.

Même si vos intentions sont tout à fait bienveillantes, vous pourriez accidentellement causer des problèmes. Un afflux massif de requêtes simultanées pourrait faire planter le serveur ; voici donc quelques bonnes pratiques pour vous assurer de ne pas semer le chaos dans votre sillage :

  • Réduisez le nombre de requêtes pour éviter de faire planter l'ensemble du site web ;
  • Lisez le fichier Robots.txt qui devrait expliquer les actions que les bots sont autorisés à effectuer. Ce n'est pas un document juridiquement contraignant, mais il exprime les souhaits du propriétaire du site.
  • Faites attention à la manière dont vous utilisez les données récupérées. Reprendre du contenu et le republier, par exemple, est à la fois préjudiciable et illégal, car ce contenu est protégé par le droit d'auteur.
  • Dans la mesure du possible, demandez l'autorisation au propriétaire pour collecter des informations sur le site web.

En adoptant une attitude amicale et éthique, vous pouvez contribuer à faire en sorte que les robots soient considérés comme les outils utiles qu'ils sont, plutôt que comme une sorte de pillards numériques.

Conseil bonus : choisissez le bon outil de web scraping

Il n'existe pas de formule parfaite pour le web scraping, mais certains facteurs doivent être pris en compte pour obtenir les meilleurs résultats au moment opportun. Cet article a été conçu pour répondre à toutes les préoccupations, aborder toutes les règles écrites ou tacites et présenter toutes les bonnes pratiques existantes. Une API viendra en aide aux nombreux adeptes du scraping au quotidien, et c'est précisément pour cette raison que notre première astuce sera toujours l'automatisation.

Effectuez votre scraping avec discernement et profitez des résultats de votre travail grâce à 1 000 appels gratuits offerts par nos soins !

Si certains des conseils mentionnés ci-dessus concernent la manière dont vous utilisez l'outil de scraping, beaucoup peuvent être intégrés et automatisés par le logiciel lui-même, vous permettant ainsi de vous concentrer sur vos propres tâches et objectifs. C'est pourquoi nous pensons que choisir le bon programme est tout aussi important que tous les conseils dont nous avons parlé, voire plus.

Je pense sincèrement que WebScrapingAPI est une excellente option, d'autant plus que vous pouvez tester l'API avec un forfait gratuit et voir par vous-même comment elle fonctionne avant d'investir de l'argent.

Si vous souhaitez vous faire une idée, nous avons rédigé un guide d'achat complet présentant 20 outils de web scraping, alors n'hésitez pas à le consulter !

À propos de l'auteur
Anda Miuțescu, Rédacteur de contenu technique @ WebScrapingAPI
Anda MiuțescuRédacteur de contenu technique

Anda Miuțescu est rédactrice de contenu technique chez WebScrapingAPI ; elle rédige des articles clairs et utiles qui aident les développeurs à comprendre le produit et ses fonctionnalités.

Commencez à créer

Prêt à faire évoluer votre système de collecte de données ?

Rejoignez plus de 2 000 entreprises qui utilisent WebScrapingAPI pour extraire des données Web à l'échelle de l'entreprise, sans aucun coût d'infrastructure.