urllib.robotparser — Analisador sintático de robots.txt

Código-fonte: Lib/urllib/robotparser.py


Este módulo fornece uma única classe, RobotFileParser, que responde a perguntas sobre se um agente de usuário específico pode ou não buscar uma URL no site que publicou o arquivo robots.txt. Para mais detalhes sobre a estrutura dos arquivos robots.txt, consulte 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.

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

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

Adicionado 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