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