21.10. urllib.robotparser — Analyseur de fichiers robots.txt

Code source : Lib/urllib/robotparser.py


Ce module fournit une simple classe, RobotFileParser, qui permet de savoir si un user-agent particulier peut accéder à une URL du site web qui a publié ce fichier robots.txt. Pour plus de détails sur la structure des fichiers robots.txt, voir http://www.robotstxt.org/orig.html.

class urllib.robotparser.RobotFileParser(url='')

Cette classe fournit des méthodes pour lire, analyser et répondre aux questions à propos du fichier robots.txt disponible à l’adresse url.

set_url(url)

Modifie l’URL référençant le fichier robots.txt.

read()

Lit le fichier robots.txt depuis son URL et envoie le contenu à l’analyseur.

parse(lines)

Analyse les lignes données en argument.

can_fetch(useragent, url)

Renvoie True si useragent est autorisé à accéder à url selon les règles contenues dans le fichier robots.txt analysé.

mtime()

Renvoie le temps auquel le fichier robots.txt a été téléchargé pour la dernière fois. Cela est utile pour des web spiders de longue durée qui doivent vérifier périodiquement si le fichier est mis à jour.

modified()

Indique que le fichier robots.txt a été téléchargé pour la dernière fois au temps courant.

crawl_delay(useragent)

Renvoie la valeur du paramètre Crawl-delay du robots.txt pour le useragent en question. S’il n’y a pas de tel paramètre ou qu’il ne s’applique pas au useragent spécifié ou si l’entrée du robots.txt pour ce paramètre a une syntaxe invalide, renvoie None.

Nouveau dans la version 3.6.

request_rate(useragent)

Renvoie le contenu du paramètre Request-rate du robots.txt sous la forme d’un namedtuple() (requests, seconds). S’il n’y a pas de tel paramètre ou qu’il ne s’applique pas au useragent spécifié ou si l’entrée du robots.txt pour ce paramètre a une syntaxe invalide, renvoie None.

Nouveau dans la version 3.6.

L’exemple suivant présente une utilisation basique de la classe RobotFileParser :

>>> import urllib.robotparser
>>> rp = urllib.robotparser.RobotFileParser()
>>> rp.set_url("http://www.musi-cal.com/robots.txt")
>>> rp.read()
>>> rrate = rp.request_rate("*")
>>> rrate.requests
3
>>> rrate.seconds
20
>>> rp.crawl_delay("*")
6
>>> rp.can_fetch("*", "http://www.musi-cal.com/cgi-bin/search?city=San+Francisco")
False
>>> rp.can_fetch("*", "http://www.musi-cal.com/")
True