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.txtdisponible à l’adresse url.-
set_url(url)¶ Modifie l’URL référençant le fichier
robots.txt.
-
read()¶ Lit le fichier
robots.txtdepuis son URL et envoie le contenu à l’analyseur.
-
parse(lines)¶ Analyse les lignes données en argument.
-
can_fetch(useragent, url)¶ Renvoie
Truesi useragent est autorisé à accéder à url selon les règles contenues dans le fichierrobots.txtanalysé.
-
mtime()¶ Renvoie le temps auquel le fichier
robots.txta é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.txta été téléchargé pour la dernière fois au temps courant.
-
crawl_delay(useragent)¶ Renvoie la valeur du paramètre
Crawl-delaydurobots.txtpour 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 durobots.txtpour ce paramètre a une syntaxe invalide, renvoieNone.Nouveau dans la version 3.6.
-
request_rate(useragent)¶ Renvoie le contenu du paramètre
Request-ratedurobots.txtsous la forme d’un named tupleRequestRate(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 durobots.txtpour ce paramètre a une syntaxe invalide,Noneest renvoyé.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
