La liste ultime des trucs et astuces de Web Scraping
Anda Miuțescu le 15 juin 2021
Si le web scraping peut sembler facile dans la pratique, il existe de nombreux pièges que le développeur non initié peut rencontrer. Au lieu de forcer brutalement jusqu'à ce que vous soyez à court de proxies non interdits, j'ose penser qu'il serait préférable de gratter intelligemment, d'obtenir les données dont vous avez besoin et de partir sans jamais vous faire remarquer.
La vraie question est de savoir comment faire ? Comment obtenir des informations sans être bloqué au niveau de l'IP, sans se heurter aux CAPTCHA, sans récupérer du code JavaScript inutile et sans modifier le code du scraper à l'infini ? 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. Planifier avant de gratter
Comme tout projet, les travaux de web scraping sont beaucoup plus faciles à réaliser si vous élaborez une stratégie claire avant même de commencer. Tout d'abord, pourquoi avez-vous besoin de données ? Cette question peut sembler évidente, mais la réponse est déterminante pour savoir quelles informations vous devez collecter.
Ensuite, où allez-vous trouver les informations ? L'outil de scraping doit être bien adapté aux sites qu'il doit visiter. L'examen de vos sources de données vous aidera à créer ou à acheter le programme adéquat pour ce travail.
Troisième question : comment allez-vous utiliser les informations recueillies ? Vous pouvez les traiter vous-même, utiliser un logiciel ou même les envoyer dans un pipeline complexe. La réponse à cette question constituera votre première étape dans le choix de la structure et du format de fichier des données collectées.
Il y a beaucoup d'autres questions et idées à régler, dont la plupart dépendent fortement de ce que vous voulez réaliser. Une chose est sûre : "mesurer deux fois, couper une fois" s'applique au web scraping.
2. Agir de manière plus humaine
Pour savoir si un visiteur de site web est un humain ou un robot, il suffit d'observer son comportement. Les robots se déplacent rapidement et n'interagissent jamais avec la page, sauf indication contraire. Ils sont donc faciles à repérer et à bloquer.
Pour aider le scraper à éviter d'être détecté, vous devez lui apprendre à se comporter davantage comme un visiteur normal, un humain. La beauté de la chose, c'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'inaction, comme si un humain lisait le contenu de la page. Un délai de 5 à 10 secondes convient parfaitement.
- Naviguez dans les pages selon un schéma arborescent. Si vous scrapez plusieurs pages enfants, passez toujours par la page mère lorsque vous vous déplacez. Cela imitera une personne cliquant sur une page, puis revenant en arrière, puis cliquant sur la suivante, et ainsi de suite.
- Faire cliquer le robot sur des choses aléatoires de temps en temps. C'est quelque chose que tout le monde fait et pas seulement moi, n'est-ce pas ?
Quoi qu'il en soit, la raison pour laquelle votre robot doit agir d'une certaine manière est que le site web peut surveiller et enregistrer son activité. Mais que se passerait-il si le site web ne pouvait pas suivre le bot ? Lisez le point suivant pour obtenir la réponse.
3. Faites tourner vos mandataires
L'utilisation d'un proxy pour s'assurer que votre véritable adresse IP n'est pas bloquée est une évidence. Il en va de même pour l'utilisation d'un proxy à partir d'une zone géographique spécifique afin d'accéder à des contenus limités à cette zone. Mais les proxys peuvent faire bien plus pour vous avec les bons outils !
Pour l'instant, l'outil dont vous avez besoin est un serveur pour faire tourner votre pool de proxy. Grâce à lui, chaque requête que vous envoyez est attribuée à une IP aléatoire au sein du pool et envoyée à la cible. De cette manière, vous pouvez gratter un site web autant que vous le souhaitez et chaque requête semblera provenir d'un endroit et d'une personne différents.
En outre, la rotation des serveurs mandataires garantit que si une IP est bloquée, vous ne serez pas bloqué jusqu'à ce que vous changiez manuellement de serveur mandataire. Une requête peut échouer, mais pas les autres. Par exemple, WebScrapingAPI relance les appels API qui ont échoué afin de s'assurer qu'il n'y a pas de trous dans votre base de données.
Pour obtenir les meilleurs résultats possibles, vous devez utiliser des proxies résidentiels rotatifs. Les IP résidentielles sont les moins susceptibles d'être remarquées ou bloquées et, en les faisant tourner, vous rendez le scraper encore plus difficile à détecter. Gardez à l'esprit qu'il s'agit parfois d'une mesure excessive. Si vous n'êtes pas confronté à des contre-mesures anti-bots difficiles, les serveurs mandataires rotatifs du centre de données peuvent faire le travail tout aussi bien et à moindre coût.
4. Utiliser un navigateur sans tête
Un navigateur sans tête est identique à un navigateur normal, sauf qu'il n'a pas d'interface utilisateur graphique. Pour surfer sur le web, vous devez utiliser une interface en ligne de commande.
Vous devez absolument ajouter un navigateur sans tête à votre pipeline de web scraping et les sites web dynamiques en sont la raison. De nombreux sites utilisent aujourd'hui le 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 à la résolution de l'écran du visiteur.
Le problème est que le précieux HTML est caché derrière du code Javascript. Pour y accéder, vous devez exécuter le code JavaScript. Un scraper ordinaire ne peut pas le faire, mais tous les navigateurs le peuvent.
Ainsi, sans environnement de navigation, l'outil de scraping ne sera pas en mesure de collecter des données à partir de n'importe quel site web qui utilise Javascript, ce qui est le cas de la plupart d'entre eux à ce stade, ou du moins de la plupart de ceux qui ont de l'importance.
Si vous construisez un scraper à partir de zéro, je vous recommande d'essayer Puppeteer, voici quelques détails sur ce qu'il fait et comment l'utiliser.
5. En-têtes User-Agent du cycle
User-Agent est le nom d'un en-tête de requête HTTP qui indique au site web que vous visitez le navigateur et le système d'exploitation que 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 les analyses et, accessoirement, pour attraper les robots.
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 d'annoncer qu'ils sont des robots. Veillez à envoyer des en-têtes normaux à 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 savoir 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, mais cela donnerait lieu à des centaines de demandes différentes, provenant d'IP différentes et ayant exactement la même empreinte digitale. Il s'agit d'un énorme piège.
Voici un conseil bonus à ce sujet : essayez d'utiliser l'agent utilisateur Googlebot. Bien entendu, tout site web souhaite être indexé, et laisse donc les robots d'indexation de Google s'occuper de leurs affaires. Attention toutefois : leurs robots ont également des adresses IP et des comportements spécifiques, de sorte que le user-agent seul n'est pas une garantie de succès.
6. Ajouter des fonctionnalités anti-CAPTCHA
Si vous scrapez bien, vous ne devriez pas rencontrer de CAPTCHA, sauf très rarement. Toutefois, si c'est le cas, c'est très ennuyeux car cela peut 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 principalement vous concentrer sur la prévention, car c'est de loin l'option la plus efficace. Voici ce que vous devez faire :
- Utilisez des serveurs mandataires pour donner l'impression que vos demandes proviennent de sources différentes.
- Modifiez les en-têtes de vos requêtes (en particulier l'agent utilisateur). Sinon, vous pouvez toujours être détecté malgré l'utilisation de plusieurs IP.
- Exécuter le code Javascript de la page. Un navigateur sans tête est la meilleure solution. De nombreux sites lancent des CAPTCHA à tous les visiteurs qui ne se rendent pas compte qu'il s'agit d'un comportement inhabituel.
Utilisez donc essentiellement les conseils n° 3, n° 4 et n° 5.
Si le scraper rencontre toujours des problèmes, vous aurez besoin d'un résolveur de CAPTCHA. Lorsque vous choisissez un outil de scrapping web, assurez-vous que cette fonction est intégrée. Sinon, il est techniquement possible d'intégrer un résolveur soi-même, mais cela implique un codage supplémentaire et une perte de temps. Pour votre information, notre API dispose de cette fonctionnalité, mais elle n'est pas confrontée à de nombreux CAPTCHA.
7. Dresser une liste d'URL
Lorsque vous commencez un travail de scraping, vous compilez probablement une liste d'URL contenant des informations précieuses. Voici une idée : au lieu d'envoyer simplement 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 scrappées avec l'URL.
La raison en est simple : si votre ordinateur tombe en panne ou si un autre événement inattendu se produit, vous saurez quelles données vous avez déjà, ce qui vous évitera d'avoir à les récupérer inutilement.
Nous vous conseillons d'écrire un script pour l'extraction des données et l'enregistrement. La mise à jour manuelle de la liste représente une charge de travail considérable et vous ne pourrez de toute façon pas suivre le bot.
8. Apprendre la structure des pages
La collecte d'un plus grand nombre de données prend naturellement plus de temps. Un moyen d'accroître l'efficacité consiste donc à déterminer avec précision les informations que le scraper doit saisir. C'est facile en théorie, mais chaque site web et chaque page web sont uniques. Pour réduire les frais généraux et gagner du temps, vous devez savoir comment sont structurées les pages que vous ciblez.
Voici comment procéder :
- Aller à la page ;
- Cliquez avec le bouton droit de la souris sur le texte souhaité et cliquez sur Inspecter l'élément;
- Notez comment ces informations sont imbriquées, dans quelles classes elles se trouvent et sous quelle balise ;
- Recherchez des modèles structurels parmi d'autres pages intéressantes. Il est probable que vous puissiez créer un script qui recueille toutes les informations nécessaires sur l'ensemble du site web.
Après avoir suivi ces étapes, il vous sera beaucoup plus facile d'extraire uniquement les détails dont vous avez besoin. L'avantage est que vous n'aurez plus à vous préoccuper du HTML non pertinent qui encombre vos documents.
La compréhension de la structure est particulièrement utile pour récupérer des informations sur les produits. Les pages de produits d'un même site web seront toutes structurées de manière similaire, voire identique. Trouvez la logique et vous pourrez extraire et analyser beaucoup plus rapidement.
9. Ajouter un délai entre les demandes
L'objectif d'un scraper web est de collecter des données plus rapidement qu'un humain ne pourrait le faire. Nous comprenons cela, mais la vitesse a un effet secondaire indésirable : il apparaît clairement que les requêtes sont envoyées par un robot.
Rappelez-vous ce que nous avons dit sur le fait d'agir comme un visiteur normal : si le scraper se distingue, il a beaucoup plus de chances d'être bloqué. Ne vous inquiétez pas, il vous suffit d'ajouter des délais aléatoires lorsque vous utilisez la même IP pour plusieurs visites simultanées ou successives.
N'oubliez pas : faites-le en utilisant le même proxy. Si vous changez d'IP et d'en-tête après chaque requête, le délai ne devrait pas être nécessaire. En revanche, si vous êtes connecté avec une IP, vous devez vous en tenir à celle-ci, ce qui signifie que vous aurez également besoin des délais.
Veillez à ce que la minuterie soit légèrement différente, de manière à ce que les délais soient aléatoires. Un délai compris entre 5 et 10 secondes devrait convenir.
10. Mettre en cache les pages importantes
Dans certains cas, vous voudrez revisiter les pages que vous avez précédemment scrappées afin d'obtenir d'autres informations. Au lieu de cela, mettez la page en cache lors de la première visite et vous aurez déjà toutes les données enregistrées.
Même avec le scraper web le plus avancé, il y a toujours une chance que le robot n'obtienne pas de données du premier coup, et même s'il en obtient, vous gaspillez vos efforts. Il suffit de saisir tout le code HTML en une seule fois, puis d'extraire toutes les informations dont vous avez besoin à partir de la version sauvegardée.
Par exemple, vous pouvez mettre en cache une page de produit pour qu'elle soit toujours à portée de main. Si vous avez besoin aujourd'hui des spécifications du produit, mais que demain vous voudrez peut-être en connaître le prix, les données sont déjà collectées et attendent d'être traitées.
Attention cependant, cela fonctionne pour des informations statiques ! Si vous voulez connaître les cours de la bourse, vous devrez constamment extraire des données fraîches, 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. Les plateformes de médias sociaux viennent à l'esprit. Bien sûr, vous pouvez obtenir quelques bribes de contenu sans compte, mais c'est plus laborieux et vous pourriez vouloir quelque chose qui ne soit 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 n'est pas sans poser quelques problèmes.
Tous les utilisateurs d'un site web possédant un compte doivent accepter les conditions d'utilisation du site. Ces conditions peuvent contenir une clause interdisant spécifiquement l'utilisation de robots, d'outils automatisés ou de racleurs de sites web. Dans ce cas, l'extraction de données serait clairement contraire aux règles que l'utilisateur a acceptées.
Il convient également de garder à l'esprit que si les sites web ne sont pas extrêmement attentifs aux visiteurs non enregistrés, ils accordent plus d'attention aux cookies envoyés par les utilisateurs enregistrés. Par conséquent, plus d'yeux seront braqués sur votre robot. Un comportement clair du robot ou des cookies révélateurs sont encore plus susceptibles d'entraîner le blocage de votre scraper.
Ce qu'il faut faire :
- Lisez attentivement les conditions d'utilisation et assurez-vous que vous ne les enfreignez pas.
- Veillez à 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. Éviter de causer des dommages au site web
La plupart des administrateurs de sites web n'apprécient pas la présence de "scrapers" sur leurs sites. Pour certains, les robots sont une gêne mineure, pour d'autres, ils représentent un danger majeur. Le fait est que les pirates et autres malfaiteurs utilisent les robots pour causer des problèmes et des méfaits, comme faire tomber des sites web ou essayer de voler des données confidentielles.
Même si vos intentions sont tout à fait amicales, vous pouvez accidentellement causer des problèmes. Une multitude de requêtes simultanées pourrait faire tomber le serveur. Voici donc quelques bonnes pratiques pour vous assurer de ne pas laisser de dégâts dans votre sillage :
- Ralentir le nombre de requêtes pour éviter que le site web ne s'effondre ;
- Lisez le fichier Robots.txt qui devrait expliquer les actions que les robots sont autorisés à entreprendre. Il ne s'agit pas d'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 un contenu et le rediffuser, par exemple, est à la fois préjudiciable et illégal, car ce contenu est protégé par la législation sur les droits d'auteur.
- Dans la mesure du possible, demandez au propriétaire l'autorisation de recueillir des informations sur le site web.
Par des actions amicales et éthiques, vous pouvez contribuer à faire en sorte que les robots soient considérés comme l'outil utile qu'ils sont, et non comme des maraudeurs numériques.
Conseil bonus : choisir le bon outil de web scraping
Il n'existe pas de formule parfaite pour le web scraping, mais il y a des facteurs à prendre en compte pour obtenir les meilleurs résultats au meilleur moment. Cet article a été conçu pour répondre à toutes les préoccupations, à toutes les règles écrites ou non écrites et à toutes les meilleures pratiques. Une API aidera les nombreux parasites du scraping quotidien, et c'est précisément la raison pour laquelle notre première astuce sera toujours l'automatisation.
Grattez judicieusement et profitez des résultats de votre travail en recevant 1000 appels gratuits de notre part !
Si certains des conseils mentionnés ci-dessus sont liés à 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, ce qui vous permet de vous concentrer sur vos propres tâches et objectifs. C'est pourquoi nous pensons que le choix du bon programme est tout aussi important que tous les conseils que nous avons mentionnés, si ce n'est plus.
Je pense honnêtement que WebScrapingAPI est une excellente option, d'autant plus que vous pouvez essayer l'API avec un plan gratuit et voir par vous-même comment elle se gère avant d'investir de l'argent.
Si vous souhaitez naviguer un peu, nous avons rédigé un énorme guide d'achat présentant 20 outils de scraping web, alors n'hésitez pas à y jeter un coup d'œil !
Nouvelles et mises à jour
Restez au courant des derniers guides et nouvelles sur le web scraping en vous inscrivant à notre lettre d'information.
We care about the protection of your data. Read our <l>Privacy Policy</l>.Privacy Policy.

Articles connexes

Explorez la comparaison approfondie entre Scrapy et Selenium pour le web scraping. De l'acquisition de données à grande échelle à la gestion de contenus dynamiques, découvrez les avantages, les inconvénients et les caractéristiques uniques de chacun. Apprenez à choisir le meilleur framework en fonction des besoins et de l'échelle de votre projet.


Apprenez à utiliser les proxys avec node-fetch, un client HTTP JavaScript populaire, pour construire des scrapeurs web. Comprendre comment les proxys fonctionnent dans le web scraping, intégrer les proxys avec node-fetch, et construire un web scraper avec le support des proxys.


Ce tutoriel montre comment explorer le web à l'aide de Python. L'exploration du web est une approche puissante pour collecter des données sur le web en localisant toutes les URL d'un ou de plusieurs domaines.
