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 Web site that published the robots.txt file. For more details on the structure of robots.txt files, see http://www.robotstxt.org/orig.html.

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

Цей клас надає методи читання, аналізу та відповідей на запитання щодо файлу robots.txt за адресою url.

set_url(url)

Встановлює URL-адресу, яка посилається на файл robots.txt.

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.

Нове в версії 3.6.

request_rate(useragent)

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

Нове в версії 3.6.

site_maps()

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

Нове в версії 3.8.

Наступний приклад демонструє базове використання класу RobotFileParser:

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