Документация Python неофициальный перевод

urllib.robotparser – парсер robots.txturllib.robotparser – Parser for robots.txt

Исходный код: Lib/urllib/robotparser.py


Этот модуль предоставляет один класс, RobotFileParser, который отвечает на вопросы о том, может ли конкретный пользовательский агент получить URL на сайте, опубликовавшем файл robots.txt. Подробнее о структуре файлов robots.txt см. RFC 9309.

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

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

Изменено в версии 3.16.0a0 (не выпущена): url параметр может быть объектом urllib.request.Request.

set_url(url)

Устанавливает URL, указывающий на файл robots.txt или объект urllib.request.Request.

Изменено в версии 3.16.0a0 (не выпущена): url параметр может быть объектом urllib.request.Request.

read()

Читает URL robots.txt и передаёт его парсеру.

parse(lines)

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

can_fetch(useragent, url)

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

mtime()

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

modified()

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

crawl_delay(useragent)

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

Добавлено в версии 3.6.

request_rate(useragent)

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

Добавлено в версии 3.6.

site_maps()

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

Добавлено в версии 3.8.

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

Следующий пример демонстрирует использование объекта urllib.request.Request с заполненными дополнительными заголовками user-agent:

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