urllib.robotparser — Парсер для robots.txt

Источник: Lib/urllib/robotparser.py


Этот модуль предоставляет один класс, RobotFileParser, который отвечает на вопросы о том, может ли конкретный агент пользователя получить URL-адрес веб-сайта, опубликовавшего файл robots.txt. Более подробную информацию о структуре файлов robots.txt см. на сайте http://www.robotstxt.org/orig.html.

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

Этот класс предоставляет методы для чтения, разбора и ответов на вопросы о файле robots.txt по адресу url.

set_url(url)

Устанавливает URL, ссылающийся на файл robots.txt.

read()

Считывает robots.txt URL и передает его парсеру.

parse(lines)

Разбирает аргумент lines.

can_fetch(useragent, url)

Возвращает True, если агенту пользователя разрешено получить url в соответствии с правилами, содержащимися в разобранном robots.txt файле.

mtime()

Возвращает время, когда файл robots.txt был получен в последний раз. Это полезно для долго работающих веб-пауков, которым необходимо периодически проверять наличие новых robots.txt файлов.

modified()

Устанавливает время последнего извлечения файла robots.txt на текущее время.

crawl_delay(useragent)

Возвращает значение параметра Crawl-delay из robots.txt для данного useragent. Если такого параметра нет, или он не относится к указанному useragent, или запись robots.txt для этого параметра имеет неверный синтаксис, возвращается None.

Added in version 3.6.

request_rate(useragent)

Возвращает содержимое параметра Request-rate из robots.txt в виде named tuple RequestRate(requests, seconds). Если такого параметра нет, или он не относится к указанному агенту-пользователю, или запись robots.txt для этого параметра имеет неверный синтаксис, возвращается None.

Added in version 3.6.

site_maps()

Возвращает содержимое параметра Sitemap из robots.txt в виде list(). Если такого параметра нет или запись robots.txt для этого параметра имеет неверный синтаксис, возвращается None.

Added in version 3.8.

Следующий пример демонстрирует базовое использование класса 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