urllib.robotparser.md
1> **Источник:** https://python-all.ru/3.16/library/urllib.robotparser.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# `urllib.robotparser` – парсер robots.txt89**Исходный код:** [Lib/urllib/robotparser.py](https://python-all.ru/src/main/Lib/urllib/robotparser.py)1011---1213Этот модуль предоставляет один класс, [`RobotFileParser`](https://python-all.ru/3.16/library/urllib.robotparser.html#urllib.robotparser.RobotFileParser), который отвечает на вопросы о том, может ли конкретный пользовательский агент получить URL на сайте, опубликовавшем файл `robots.txt`. Подробнее о структуре файлов `robots.txt` см. [**RFC 9309**](https://python-all.ru/3.16/library/urllib.robotparser.html).1415#### `class urllib.robotparser.RobotFileParser(url='')`1617Этот класс предоставляет методы для чтения, разбора и ответов на вопросы о файле `robots.txt` по адресу *url* или объекте [`urllib.request.Request`](https://python-all.ru/3.16/library/urllib.request.html#urllib.request.Request).1819Изменено в версии 3.16.0a0 (не выпущена): *url* параметр может быть объектом [`urllib.request.Request`](https://python-all.ru/3.16/library/urllib.request.html#urllib.request.Request).2021#### `set_url(url)`2223Устанавливает URL, указывающий на файл `robots.txt` или объект [`urllib.request.Request`](https://python-all.ru/3.16/library/urllib.request.html#urllib.request.Request).2425Изменено в версии 3.16.0a0 (не выпущена): *url* параметр может быть объектом [`urllib.request.Request`](https://python-all.ru/3.16/library/urllib.request.html#urllib.request.Request).2627#### `read()`2829Читает URL `robots.txt` и передаёт его парсеру.3031#### `parse(lines)`3233Разбирает аргумент lines.3435#### `can_fetch(useragent, url)`3637Возвращает `True`, если *useragent* разрешено получать *url* в соответствии с правилами, содержащимися в разобранном файле `robots.txt`.3839#### `mtime()`4041Возвращает время последней загрузки файла `robots.txt`. Это полезно для долго работающих веб-пауков, которым необходимо периодически проверять новые файлы `robots.txt`.4243#### `modified()`4445Устанавливает время последней загрузки файла `robots.txt` на текущее время.4647#### `crawl_delay(useragent)`4849Возвращает значение параметра `Crawl-delay` из `robots.txt` для указанного *useragent*. Если такого параметра нет, или он не применяется к указанному *useragent*, или запись `robots.txt` для этого параметра содержит недопустимый синтаксис, возвращает `None`.5051Добавлено в версии 3.6.5253#### `request_rate(useragent)`5455Возвращает содержимое параметра `Request-rate` из `robots.txt` в виде [именованного кортежа](https://python-all.ru/3.16/glossary.html#term-named-tuple) `RequestRate(requests, seconds)`. Если такого параметра нет, или он не применяется к указанному *useragent*, или запись `robots.txt` для этого параметра содержит недопустимый синтаксис, возвращает `None`.5657Добавлено в версии 3.6.5859#### `site_maps()`6061Возвращает содержимое параметра `Sitemap` из `robots.txt` в виде [`list()`](https://python-all.ru/3.16/library/stdtypes.html#list). Если такого параметра нет или запись `robots.txt` для этого параметра содержит недопустимый синтаксис, возвращает `None`.6263Добавлено в версии 3.8.6465Следующий пример демонстрирует базовое использование класса [`RobotFileParser`](https://python-all.ru/3.16/library/urllib.robotparser.html#urllib.robotparser.RobotFileParser):6667```python68>>> import urllib.robotparser69>>> rp = urllib.robotparser.RobotFileParser()70>>> rp.set_url("http://www.pythontest.net/robots.txt")71>>> rp.read()72>>> rrate = rp.request_rate("*")73>>> rrate.requests74175>>> rrate.seconds76177>>> rp.crawl_delay("*")78679>>> rp.can_fetch("*", "http://www.pythontest.net/")80True81>>> rp.can_fetch("*", "http://www.pythontest.net/no-robots-here/")82False83```8485Следующий пример демонстрирует использование объекта [`urllib.request.Request`](https://python-all.ru/3.16/library/urllib.request.html#urllib.request.Request) с заполненными дополнительными заголовками user-agent:8687```python88>>> import urllib.robotparser89>>> import urllib.request90>>> rp = urllib.robotparser.RobotFileParser()91>>> rp.set_url(urllib.request.Request("http://www.pythontest.net/robots.txt", headers={"User-Agent": "IsraBot"}))92>>> rp.read()93>>> rp.can_fetch("*", "http://www.pythontest.net/")94True95>>> rp.can_fetch("*", "http://www.pythontest.net/no-robots-here/")96False97```98