urllib.robotparser – парсер robots.txt¶urllib.robotparser – Parser for robots.txt
Исходный код: Lib/urllib/robotparser.py
Этот модуль предоставляет один класс, RobotFileParser, который отвечает на вопросы о том, может ли конкретный пользовательский агент получить URL на сайте, опубликовавшем файл robots.txt. Подробнее о структуре файлов robots.txt см. RFC 9309.
- class urllib.robotparser.RobotFileParser(url='')¶
Этот класс предоставляет методы для чтения, разбора и ответов на вопросы о файле
robots.txtпо адресу url или объектеurllib.request.Request.Изменено в версии 3.16.0a0 (не выпущена): url параметр может быть объектом
urllib.request.Request.- set_url(url)¶
Устанавливает URL, указывающий на файл
robots.txtили объектurllib.request.Request.Изменено в версии 3.16.0a0 (не выпущена): url параметр может быть объектом
urllib.request.Request.
- 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.pythontest.net/robots.txt")
>>> rp.read()
>>> rrate = rp.request_rate("*")
>>> rrate.requests
1
>>> rrate.seconds
1
>>> rp.crawl_delay("*")
6
>>> rp.can_fetch("*", "http://www.pythontest.net/")
True
>>> rp.can_fetch("*", "http://www.pythontest.net/no-robots-here/")
False
Следующий пример демонстрирует использование объекта urllib.request.Request
с заполненными дополнительными заголовками user-agent:
>>> import urllib.robotparser
>>> import urllib.request
>>> rp = urllib.robotparser.RobotFileParser()
>>> rp.set_url(urllib.request.Request("http://www.pythontest.net/robots.txt", headers={"User-Agent": "IsraBot"}))
>>> rp.read()
>>> rp.can_fetch("*", "http://www.pythontest.net/")
True
>>> rp.can_fetch("*", "http://www.pythontest.net/no-robots-here/")
False