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 fichierrobots.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
durobots.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 durobots.txt
pour ce paramètre a une syntaxe invalide, renvoieNone
.Nouveau dans la version 3.6.
-
request_rate
(useragent)¶ Renvoie le contenu du paramètre
Request-rate
durobots.txt
sous 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.txt
pour ce paramètre a une syntaxe invalide,None
est 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