> **Источник:** https://python-all.ru/3.12/library/urllib.robotparser.html
>
> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.

---

# `urllib.robotparser` – парсер robots.txt

**Исходный код:** [Lib/urllib/robotparser.py](https://python-all.ru/src/3.12/Lib/urllib/robotparser.py)

---

Этот модуль предоставляет единственный класс [`RobotFileParser`](https://python-all.ru/3.12/library/urllib.robotparser.html#urllib.robotparser.RobotFileParser), который отвечает на вопросы о том, может ли конкретный пользовательский агент получить URL на веб-сайте, опубликовавшем файл `robots.txt`. Подробнее о структуре файлов `robots.txt` см. [http://www.robotstxt.org/orig.html](https://python-all.ru/3.12/library/urllib.robotparser.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` в виде [именованного кортежа](https://python-all.ru/3.12/glossary.html#term-named-tuple) `RequestRate(requests, seconds)`. Если такого параметра нет, или он не применяется к указанному *useragent*, или запись `robots.txt` для этого параметра содержит недопустимый синтаксис, возвращает `None`.

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

#### `site_maps()`

Возвращает содержимое параметра `Sitemap` из `robots.txt` в виде [`list()`](https://python-all.ru/3.12/library/stdtypes.html#list). Если такого параметра нет или запись `robots.txt` для этого параметра содержит недопустимый синтаксис, возвращает `None`.

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

Следующий пример демонстрирует базовое использование класса [`RobotFileParser`](https://python-all.ru/3.12/library/urllib.robotparser.html#urllib.robotparser.RobotFileParser):

```python
>>> 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
```
