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
в качестве именованный кортежRequestRate(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