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 *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.

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
