urllib.robotparser
— Парсер robots.txt¶
Модуль предоставляет единственный класс, RobotFileParser
,
который отвечает на вопросы о том, может ли пользовательский агент
получить URL-адрес на веб-сайте, на котором опубликован файл
robots.txt
. Дополнительные сведения о структуре файлов
robots.txt
см. на странице
документации.
-
class
urllib.robotparser.
RobotFileParser
(url='')¶ Данный класс предоставляет методы для чтения, анализа и ответов на вопросы о файле
robots.txt
по адресу url.-
set_url
(url)¶ Задаёт URL-адрес, ссылающийся на файл
robots.txt
.
-
read
()¶ Считывает URL-адрес
robots.txt
и передает его синтаксическому анализатору.
-
parse
(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.
-
В следующем примере демонстрируется базовое использование класса
RobotFileParser
:
>>> import urllib.robotparser
>>> rp = urllib.robotparser.RobotFileParser()
>>> rp.set_url("https://digitology.tech/robots.txt")
>>> rp.read()
>>> rrate = rp.request_rate("*")
>>> rrate.requests
3
>>> rrate.seconds
20
>>> rp.crawl_delay("*")
6
>>> rp.can_fetch("*", "https://digitology.tech/cgi-bin/search?city=San+Francisco")
False
>>> rp.can_fetch("*", "https://digitology.tech/")
True