urllib.robotparser — Parser for robots.txt¶Source code: 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.
This class provides methods to read, parse and answer questions about the
robots.txt file at url or a urllib.request.Request object.
Changed in version 3.16.0a0 (unreleased): url parameter can be a urllib.request.Request object.
Sets the URL referring to a robots.txt file or a
urllib.request.Request object.
Changed in version 3.16.0a0 (unreleased): url parameter can be a urllib.request.Request object.
Reads the robots.txt URL and feeds it to the parser.
Parses the lines argument.
Returns True if the useragent is allowed to fetch the url
according to the rules contained in the parsed robots.txt
file.
Returns the time the robots.txt file was last fetched. This is
useful for long-running web spiders that need to check for new
robots.txt files periodically.
Sets the time the robots.txt file was last fetched to the current
time.
Returns the value of the Crawl-delay parameter from robots.txt
for the useragent in question. If there is no such parameter or it
doesn’t apply to the useragent specified or the robots.txt entry
for this parameter has invalid syntax, return None.
Added in version 3.6.
Returns the contents of the Request-rate parameter from
robots.txt as a named tuple RequestRate(requests, seconds).
If there is no such parameter or it doesn’t apply to the useragent
specified or the robots.txt entry for this parameter has invalid
syntax, return None.
Added in version 3.6.
The following example demonstrates basic use of the RobotFileParser
class:
>>> 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