← retour aux snippets

urllib.robotparser: respecter robots.txt

Vérifier si une URL est autorisée pour un user-agent donné (sans réseau).

python http #crawler#urllib

objectif

Vérifier si une URL est autorisée pour un user-agent donné (sans réseau).

code minimal

from urllib import robotparser
rp = robotparser.RobotFileParser()
rp.parse(["User-agent: *", "Disallow: /private"])
print(rp.can_fetch("*", "https://site.com/private/x") is False)  # attendu: True

utilisation

from urllib import robotparser
rp = robotparser.RobotFileParser()
rp.parse(["User-agent: test", "Allow: /public"])
print(rp.can_fetch("test", "https://x/public") is True)

variante(s) utile(s)

from urllib import robotparser
rp = robotparser.RobotFileParser()
rp.set_url("https://data.pm/robots.txt")  # ne pas appeler read() ici
print(hasattr(rp, "can_fetch"))

notes

  • Utilisez read() en vrai pour charger depuis le réseau (avec timeout).
  • Respecter robots.txt réduit les risques d’IP bannies.