Le web scraping est une technique puissante pour extraire des données de sites web, mais elle doit être pratiquée de manière responsable. Un élément crucial du web scraping est la compréhension et le respect du fichier robots.txt. Cet article présente en détail le fichier robots.txt, son rôle dans le web scraping et les meilleures pratiques à suivre.
Qu'est-ce que le fichier robots.txt ?
Le fichier robots.txt est une norme utilisée par les sites web pour communiquer avec les robots d'indexation et les bots. Il précise quelles parties du site peuvent ou ne peuvent pas être consultées par des systèmes automatisés. Bien qu'il soit principalement conçu pour les moteurs de recherche, le fichier robots.txt a également un impact sur les pratiques de "web scraping".
Objectif
L'objectif principal du fichier robots.txt est d'indiquer aux robots d'indexation (comme ceux des moteurs de recherche) les pages ou les sections d'un site web qu'ils sont autorisés à explorer ou à indexer. Cela permet d'empêcher certains contenus d'apparaître dans les résultats des moteurs de recherche, de gérer la charge des serveurs et de contrôler l'accessibilité des informations privées ou sensibles. Les administrateurs de sites peuvent ainsi contrôler et gérer les activités des robots d'indexation, ce qui permet d'éviter les surcharges et de protéger les données sensibles.
Localisation
Le fichier robots.txt doit être placé dans le répertoire racine du site web. Par exemple, il doit être accessible via http://www.example.com/robots.txt.
Format
Le fichier se compose de texte simple et suit une structure de base. Il comprend des directives qui précisent quels agents utilisateurs (bots) doivent suivre quelles règles.
Directives communes:
-
User-agent
Définit à quel robot d'exploration du web les règles suivantes s'appliquent.
Par exemple : User-agent : *
L'astérisque (*) est un joker qui s'applique à tous les robots. -
Désactiver
Spécifie les chemins ou les pages auxquels un robot d'exploration ne doit pas accéder.
Par exemple : Disallow : /private/
Cela indique aux robots de ne pas explorer les URL qui commencent par /private/. -
Autoriser
Remplace une directive Disallow pour des chemins d'accès spécifiques.
Par exemple : Autoriser : /private/public-page.html
Cela permet aux robots d'accéder à la page publique.html même si /private/ est interdit. -
Délai d'exécution
Définit un délai entre les demandes pour gérer la charge sur le serveur.
Par exemple : Délai de rampement : 10 -
Plan du site
Indique l'emplacement du sitemap XML pour aider les robots d'indexation à trouver et à indexer les pages plus efficacement.
Par exemple : Plan du site : http://www.example.com/sitemap.xml
Exemple de fichier robots.txt
User-agent : * Disallow : /private/ Allow : /private/public-page.html Délai de crawl : 12 Plan du site : http://www.example.com/sitemap.xml
Autres considérations
- Certains moteurs de recherche imposent une limite à la taille des
robots.txt
Le fichier doit être d'une taille maximale de 500 Ko. Veillez à ce que le fichier ne dépasse pas cette limite. - Les
robots.txt
doit utiliser le codage UTF-8. L'utilisation d'autres encodages peut empêcher une analyse correcte. - Certains robots d'indexation (comme Googlebot) acceptent l'utilisation de caractères génériques dans les champs
Désactiver
etAutoriser
(par ex,*
pour tous les caractères,$
pour la fin d'une chaîne de caractères).Disallow : /private/* Disallow : /temp/$
- Les
robots.txt
est sensible à la casse. Par exemple,/Admin/
et/admin/
sont des chemins différents. - Les personnes peuvent utiliser le
#
pour ajouter des commentaires dans le fichier, qui sont ignorés par les robots d'indexation mais qui peuvent aider les administrateurs à comprendre et à gérer le fichier.# Empêcher tous les robots d'accéder aux pages d'administration User-agent : * Disallow : /admin/
- Avant d'appliquer le
robots.txt
dans un environnement de production, utilisez des outils (tels que le testeur robots.txt dans Google Search Console) pour tester les règles et vous assurer qu'elles fonctionnent comme prévu. - Pour les sites web de grande taille ou ceux dont le contenu est dynamique, il peut être nécessaire de générer dynamiquement le fichier
robots.txt
fichier. Assurez-vous que le fichier généré est toujours valide et qu'il comprend toutes les règles nécessaires. - Tous les crawlers n'obéissent pas à la
robots.txt
des mesures supplémentaires (comme des pare-feu de serveur, des listes noires d'adresses IP, etc.) peuvent donc s'avérer nécessaires pour protéger le contenu sensible des robots malveillants. - Si vous souhaitez empêcher les moteurs de recherche d'indexer des pages spécifiques mais autoriser les robots d'indexation à y accéder pour récupérer d'autres contenus, utilisez l'option
noindex
meta tag au lieu deDésactiver
.<meta name="robots" content="noindex">
- Essayez de garder le
robots.txt
sont simples et évitent les règles trop complexes. Les règles complexes peuvent être difficiles à maintenir et peuvent entraîner des erreurs d'analyse.
L'impact de robots.txt sur le Web Scraping
-
Lignes directrices pour les crawlers
La fonction première de robots.txt est de fournir des instructions aux robots d'indexation sur les parties du site auxquelles ils ne doivent pas accéder. Par exemple, si un fichier ou un répertoire est interdit dans le fichier robots.txt, les robots d'exploration sont censés éviter ces zones.
-
Respect du fichier robots.txt
- Le raclage éthique : De nombreux scrapeurs et robots d'indexation éthiques respectent les règles spécifiées dans le fichier robots.txt par courtoisie envers les propriétaires de sites et pour éviter de surcharger le serveur.
- Considérations juridiques : Bien qu'il ne soit pas juridiquement contraignant, le fait d'ignorer le fichier robots.txt peut parfois entraîner des problèmes juridiques, en particulier si le "scraping" cause des dommages ou enfreint les conditions de service.
-
Chemins d'accès interdits et chemins d'accès autorisés
- Chemins d'accès interdits : Elles sont spécifiées à l'aide de la directive Disallow. Par exemple,
Disallow : /private-data/
signifie que tous les robots doivent éviter le répertoire /private-data/. - Chemins autorisés : Si certains répertoires ou pages sont autorisés, ils peuvent être spécifiés à l'aide de la directive Allow.
- Chemins d'accès interdits : Elles sont spécifiées à l'aide de la directive Disallow. Par exemple,
-
Règles spécifiques à l'agent utilisateur
Le fichier robots.txt peut spécifier des règles pour différents robots d'exploration à l'aide de la directive User-agent.
Par exemple :
User-agent : Googlebot
Ne pas autoriser : /no-google/Cela empêche Googlebot d'accéder à /no-google/ mais autorise d'autres robots d'exploration.
-
Charge du serveur
En respectant les directives de robots.txt, les scrapers réduisent le risque de surcharger un serveur, ce qui peut se produire si un trop grand nombre de requêtes est effectué trop rapidement.
-
Pas un mécanisme de sécurité
Le fichier robots.txt n'est pas un dispositif de sécurité. Il s'agit d'une ligne directrice et non d'une restriction. Il repose sur le respect des règles par les robots d'indexation. Les robots malveillants ou ceux qui sont programmés pour ignorer le fichier robots.txt peuvent toujours accéder aux zones interdites.
-
Conformité et bonnes pratiques
- Respecter les robots.txt : Pour éviter les conflits potentiels et respecter les opérateurs de sites web, les scrapers doivent adhérer aux règles définies dans le fichier robots.txt.
- Tenir compte de l'état de robots.txt : Vérifiez toujours le fichier robots.txt avant de scraper un site afin de vous assurer que les politiques du site sont respectées.
Idées reçues sur robots.txt
-
Le fichier robots.txt est juridiquement contraignant
Le fichier robots.txt n'est pas un contrat juridique, mais un protocole de gestion de l'accès des robots d'indexation. Bien qu'il soit essentiel pour un scraping éthique, il n'impose pas de restrictions d'accès sur le plan juridique.
-
robots.txt empêche tout scraping
Le fichier robots.txt est une ligne directrice pour les robots et les crawlers, mais il n'empêche pas toutes les formes de "scraping". Le scraping manuel ou des outils sophistiqués peuvent encore accéder à des zones restreintes.
-
robots.txt sécurise les données sensibles
Le fichier robots.txt n'est pas une fonction de sécurité. Il est destiné à gérer l'accès des robots plutôt qu'à sécuriser des informations sensibles.
Comment récupérer des pages d'un site web avec robots.txt

1. Préparation du grattage
Mise en place de l'environnement
Installation nécessaire Python bibliothèques :
import requests from bs4 import BeautifulSoup import time
Choisir les bons outils
- Demandes : Pour effectuer des requêtes HTTP.
- BeautifulSoup : Pour l'analyse syntaxique de HTML et XML.
- Scrapy : Un cadre complet de raclage de sites web.
- Sélénium : Pour interagir avec un contenu chargé dynamiquement.
Évaluer les conditions d'utilisation du site web
Consultez les conditions d'utilisation du site web pour vous assurer que vos actions sont conformes à leurs politiques. Certains sites interdisent explicitement le scraping.
2. Racler avec précaution
Récupération et analyse de robots.txt
Tout d'abord, vérifiez le fichier robots.txt pour comprendre les règles d'exploration du site :
response = requests.get('https://example.com/robots.txt') robots_txt = response.text def parse_robots_txt(robots_txt) : rules = {} user_agent = '*' for line in robots_txt.split('\n') : if line.startswith('User-agent') : user_agent = line.split(':')[1].strip() elif line.startswith('Disallow') : path = line.split(':')[1].strip() rules[user_agent] = rules.get(user_agent, []) + [path] return rules rules = parse_robots_txt(robots_txt)
Identifier les chemins autorisés et non autorisés
Déterminez les chemins auxquels vous pouvez accéder légalement et éthiquement sur la base des directives robots.txt :
allowed_paths = [path for path in rules.get('*', []) if not path.startswith('/')]
Traiter les chemins d'accès non autorisés de manière éthique
Si vous avez besoin de données provenant de chemins d'accès interdits ou si vous souhaitez explorer des sites web protégés par le fichier robots.txt, envisagez les options suivantes :
- Contactez le propriétaire du site : Demander l'autorisation d'accéder aux données.
- Utiliser des méthodes alternatives : Explorer les API ou les sources de données publiques.
3. Autres méthodes d'accès aux données
Les API et leurs avantagestages
De nombreux sites web proposent des API qui offrent un accès structuré à leurs données. L'utilisation des API est souvent plus fiable et plus respectueuse que le scraping.
Sources de données publiques
Recherchez les données accessibles au public qui pourraient répondre à vos besoins. Les sites web gouvernementaux, les instituts de recherche et les plateformes de données ouvertes sont de bons points de départ.
Accords de partage de données
Contactez le propriétaire du site web pour négocier des accords de partage de données. Cela peut permettre d'accéder aux données tout en respectant les politiques du site.
4. Techniques avancées
Récupération de contenu chargé dynamiquement
Utilisez Selenium ou des outils similaires pour récupérer le contenu chargé dynamiquement par JavaScript :
from selenium import webdriver driver = webdriver.Chrome() driver.get('https://example.com') html = driver.page_source soup = BeautifulSoup(html, 'html.parser')
Utiliser des navigateurs sans tête
Les navigateurs sans tête comme Headless Chrome ou PhantomJS peuvent interagir avec des pages web sans afficher d'interface utilisateur, ce qui les rend utiles pour l'extraction de contenu dynamique.
Éviter les limites de détection et de traitement
Faites tourner les agents utilisateurs, utilisez des proxys et mettez en place des délais entre les demandes pour imiter le comportement humain et éviter d'être bloqué.
OkeyProxy est un puissant fournisseur de proxy, prenant en charge rotation automatique des adresses IP résidentielles avec une grande qualité. Avec des FAI offrant plus de 150 millions d'IP dans le monde entier, vous pouvez maintenant vous inscrire et recevoir un essai gratuit de 1 Go !

Conclusion
En suivant ce guide, vous pourrez naviguer dans la complexité du scraping de pages de sites web avec robots.txt tout en adhérant aux normes éthiques et légales. Le respect du fichier robots.txt vous permet non seulement d'éviter d'éventuels problèmes juridiques, mais aussi de garantir une relation de coopération avec les propriétaires de sites web. Bon scraping !