urllib.robotparser — Parser for robots.txt¶
Código fuente: Lib/urllib/robotparser.py
This module provides a single class, RobotFileParser, which answers
questions about whether or not a particular user agent can fetch a URL on the
website that published the robots.txt file. For more details on the
structure of robots.txt files, see 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.txty la envía al analizador.
- parse(lines)¶
Analiza el argumento lines.
- can_fetch(useragent, url)¶
Retorna
Truesi el useragent tiene permiso para buscar la url de acuerdo con las reglas contenidas en el archivorobots.txtanalizado.
- 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.txtperiódicamente.
- modified()¶
Establece la hora a la que se recuperó por última vez el archivo
robots.txthasta la hora actual.
- crawl_delay(useragent)¶
Retorna el valor del parámetro
Crawl-delayderobots.txtpara el useragent en cuestión. Si no existe tal parámetro o no se aplica al useragent especificado o la entradarobots.txtpara este parámetro tiene una sintaxis no válida, devuelveNone.Added in version 3.6.
- request_rate(useragent)¶
Retorna el contenido del parámetro
Request-ratederobots.txtcomo una tupla nombradaRequestRate(requests, seconds). Si no existe tal parámetro o no se aplica al useragent especificado o la entradarobots.txtpara este parámetro tiene una sintaxis no válida, devuelveNone.Added in version 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