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.txtfile at url or aurllib.request.Requestobject.Змінено в версії 3.16.0a0 (unreleased): url parameter can be a
urllib.request.Requestobject.- set_url(url)¶
Sets the URL referring to a
robots.txtfile or aurllib.request.Requestobject.Змінено в версії 3.16.0a0 (unreleased): url parameter can be a
urllib.request.Requestobject.
- 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 tupleRequestRate(requests, seconds). Якщо такого параметра немає або він не застосовується до вказаного useragent або записrobots.txtдля цього параметра має недійсний синтаксис, повернітьNone.Added in version 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
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