urllib.robotparser — Parser for robots.txt

Вихідний код: Lib/urllib/robotparser.py


This module provides a single class, RobotFileParser, which answers questions about whether or not a particular user agent can fetch a URL on the website that published the robots.txt file. For more details on the structure of robots.txt files, see RFC 9309.

class urllib.robotparser.RobotFileParser(url='')

This class provides methods to read, parse and answer questions about the robots.txt file at url or a urllib.request.Request object.

Змінено в версії 3.16.0a0 (unreleased): url parameter can be a urllib.request.Request object.

set_url(url)

Sets the URL referring to a robots.txt file or a urllib.request.Request object.

Змінено в версії 3.16.0a0 (unreleased): url parameter can be a urllib.request.Request object.

read()

Читає URL-адресу robots.txt і передає її синтаксичному аналізатору.

parse(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.

Added in version 3.6.

request_rate(useragent)

Повертає вміст параметра Request-rate з robots.txt як named tuple RequestRate(requests, seconds). Якщо такого параметра немає або він не застосовується до вказаного useragent або запис robots.txt для цього параметра має недійсний синтаксис, поверніть None.

Added in version 3.6.

site_maps()

Повертає вміст параметра Карта сайту з robots.txt у формі list(). Якщо такого параметра немає або запис robots.txt для цього параметра має недійсний синтаксис, поверніть None.

Added in version 3.8.

Наступний приклад демонструє базове використання класу 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

The following example demonstrates use of a urllib.request.Request object with additional user-agent headers populated:

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