urllib.robotparser-Python中robots.txt的解析器

网站所有者使用/robots.txt文件向网络机器人提供有关其网站的说明;这称为机器人排除协议。该文件是一个简单的基于文本的访问控制系统,用于自动访问Web资源的计算机程序。此类程序称为蜘蛛,爬虫等。该文件指定用户代理标识符,后跟该代理可能无法访问的URL列表。

例如

#robots.txt
Sitemap: https://example.com/sitemap.xml
User-agent: *
Disallow: /admin/
Disallow: /downloads/
Disallow: /media/
Disallow: /static/

该文件通常放在Web服务器的顶级目录中。

Python的urllib.robotparser模块提供了RobotFileParser类。它回答有关特定用户代理是否可以在发布robots.txt文件的网站上获取URL的问题。

在RobotFileParser类中定义了以下方法

set_url(url)

此方法设置指向robots.txt文件的URL。

读()

此方法读取robots.txt URL,并将其提供给解析器。

parse()

此方法解析lines参数。

can_fetch()

如果用户代理能够根据robots.txt中包含的规则提取网址,则此方法返回True。

mtime()

此方法返回上次获取robots.txt文件的时间。

改性()

此方法设置上次获取robots.txt的时间。

crawl_delay()

此方法返回所涉及的用户代理的抓取延迟参数robots.txt的值。

request_rate()

此方法以命名元组RequestRate(requests,seconds)的形式返回Request-rate参数的内容。

示例

from urllib import parse
from urllib import robotparser
AGENT_NAME = 'PyMOTW'
URL_BASE = 'https://example.com/'
parser = robotparser.RobotFileParser()
parser.set_url(parse.urljoin(URL_BASE, 'robots.txt'))
parser.read()