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 RFC 9309.

class urllib.robotparser.RobotFileParser(url='')

This class provides methods to read, parse and answer questions about the robots.txt file at url or a urllib.request.Request object.

Distinto en la versión 3.16.0a0 (unreleased): url parameter can be a urllib.request.Request object.

set_url(url)

Sets the URL referring to a robots.txt file or a urllib.request.Request object.

Distinto en la versión 3.16.0a0 (unreleased): url parameter can be a urllib.request.Request object.

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 archivo robots.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 archivos robots.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 de robots.txt para el useragent en cuestión. Si no existe tal parámetro o no se aplica al useragent especificado o la entrada robots.txt para este parámetro tiene una sintaxis no válida, devuelve None.

Added in version 3.6.

request_rate(useragent)

Retorna el contenido del parámetro Request-rate de robots.txt como una tupla nombrada RequestRate(requests, seconds). Si no existe tal parámetro o no se aplica al useragent especificado o la entrada robots.txt para este parámetro tiene una sintaxis no válida, devuelve None.

Added in version 3.6.

site_maps()

Retorna el contenido del parámetro Sitemap de robots.txt en forma de list(). Si no existe tal parámetro o la entrada robots.txt para este parámetro tiene una sintaxis no válida, devuelve None.

Added in version 3.8.

El siguiente ejemplo demuestra el uso básico de la clase RobotFileParser:

>>> import urllib.robotparser
>>> rp = urllib.robotparser.RobotFileParser()
>>> rp.set_url("http://www.pythontest.net/robots.txt")
>>> rp.read()
>>> rrate = rp.request_rate("*")
>>> rrate.requests
1
>>> rrate.seconds
1
>>> rp.crawl_delay("*")
6
>>> rp.can_fetch("*", "http://www.pythontest.net/")
True
>>> rp.can_fetch("*", "http://www.pythontest.net/no-robots-here/")
False

The following example demonstrates use of a urllib.request.Request object with additional user-agent headers populated:

>>> import urllib.robotparser
>>> import urllib.request
>>> rp = urllib.robotparser.RobotFileParser()
>>> rp.set_url(urllib.request.Request("http://www.pythontest.net/robots.txt", headers={"User-Agent": "IsraBot"}))
>>> rp.read()
>>> rp.can_fetch("*", "http://www.pythontest.net/")
True
>>> rp.can_fetch("*", "http://www.pythontest.net/no-robots-here/")
False