urllib.robotparser — Парсер для robots.txt


Модуль предоставляет один класс 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.

site_maps()

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

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

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