urllib.robotparser — Parser for robots.txt

Código-fonte: 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 Web site 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 classe fornece métodos para ler, analisar e responder perguntas sobre o arquivo robots.txt em url.

set_url(url)

Define a URL referente a um arquivo robots.txt.

read()

Lê o URL robots.txt e o alimenta para o analisador sintático.

parse(lines)

Analisa o argumento de linhas.

can_fetch(useragent, url)

Retorna True se o useragent tiver permissão para buscar a url de acordo com as regras contidas no arquivo robots.txt analisado.

mtime()

Retorna o horário em que o arquivo robots.txt foi buscado pela última vez. Isso é útil para web spiders de longa duração que precisam verificar novos arquivos robots.txt periodicamente.

modified()

Define a hora em que o arquivo robots.txt foi buscado pela última vez para a hora atual.

crawl_delay(useragent)

Retorna o valor do parâmetro Crawl-delay de robots.txt para o useragent em questão. Se não houver tal parâmetro ou se ele não se aplicar ao useragent especificado ou se a entrada robots.txt para este parâmetro tiver sintaxe inválida, retorna None.

Novo na versão 3.6.

request_rate(useragent)

Retorna o conteúdo do parâmetro Request-rate de robots.txt como uma tupla nomeada RequestRate(requests, seconds). Se não houver tal parâmetro ou se ele não se aplicar ao useragent especificado ou se a entrada robots.txt para este parâmetro tiver sintaxe inválida, retorna None.

Novo na versão 3.6.

site_maps()

Retorna o conteúdo do parâmetro Sitemap de robots.txt no formato de uma list(). Se não houver tal parâmetro ou a entrada robots.txt para este parâmetro tiver sintaxe inválida, retorna None.

Novo na versão 3.8.

O exemplo a seguir demonstra o uso básico da 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