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()¶
Считывает 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
в виде named tupleRequestRate(requests, seconds)
. Если такого параметра нет, или он неприменим к указанному useragent, или записьrobots.txt
для этого параметра имеет недопустимый синтаксис, вернитеNone
.Добавлено в версии 3.6.
Следующий пример демонстрирует базовое использование класса 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