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 named tuple RequestRate(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, None est renvoyé.

Nouveau dans la version 3.6.

site_maps()

Returns the contents of the Sitemap parameter from robots.txt in the form of a list(). If there is no such parameter or the robots.txt entry for this parameter has invalid syntax, return None.

Nouveau dans la version 3.8.

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