urllib.robotparser
— Analizador para robots.txt¶
Código fuente: Lib/urllib/robotparser.py
Este módulo proporciona una sola clase, RobotFileParser
, la cual responde preguntas acerca de si un agente de usuario en particular puede o no obtener una URL en el sitio Web que publico el archivo robots.txt
. Para más detalles sobre la estructura del archivo robots.txt
, consulte http://www.robotstxt.org/orig.html.
-
class
urllib.robotparser.
RobotFileParser
(url='')¶ Esta clase proporciona métodos para leer, analizar y responder preguntas acerca de
robots.txt
-
set_url
(url)¶ Establece la URL que hace referencia a un archivo
robots.txt
.
-
read
()¶ Lee la URL
robots.txt
y la envía al analizador.
-
parse
(lines)¶ Analiza el argumento lines.
-
can_fetch
(useragent, url)¶ Retorna
True
si el useragent tiene permiso para buscar la url de acuerdo con las reglas contenidas en el archivorobots.txt
analizado.
-
mtime
()¶ Retorna la hora en que se recuperó por última vez el archivo
robots.txt
. Esto es útil para arañas web de larga duración que necesitan buscar nuevos archivosrobots.txt
periódicamente.
-
modified
()¶ Establece la hora a la que se recuperó por última vez el archivo
robots.txt
hasta la hora actual.
-
crawl_delay
(useragent)¶ Retorna el valor del parámetro
Crawl-delay
derobots.txt
para el useragent en cuestión. Si no existe tal parámetro o no se aplica al useragent especificado o la entradarobots.txt
para este parámetro tiene una sintaxis no válida, devuelveNone
.Nuevo en la versión 3.6.
-
request_rate
(useragent)¶ Retorna el contenido del parámetro
Request-rate
derobots.txt
como una tupla nombradaRequestRate(requests, seconds)
. Si no existe tal parámetro o no se aplica al useragent especificado o la entradarobots.txt
para este parámetro tiene una sintaxis no válida, devuelveNone
.Nuevo en la versión 3.6.
-
El siguiente ejemplo demuestra el uso básico de la clase 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