python 标准库 urllib.robotparser
一切终将过去,我们仍旧前行,如同黑暗中的舞者。
– 临风语录
源码
源代码: Lib/urllib/robotparser.py
robotparser 实现了一个用于分析 robots.txt 文件格式的解析器, 它含有一个检查给定用户代理是否可以访问给定资源的函数。它的目的是给那些品行端正的爬虫用的,或用来指导需要节流,否则就会被限制访问的其他抓取器。
robots.txt
robots.txt 文件是一个简单的基于文本的访问控制系统,用于控制那些自动访问网络资源的程序(如「爬虫」,「抓取器」,等等)。文件由特定的用户代理程序标识的记录以及代理不允许访问的 URLs (或 URL 前缀) 的一个列表组成。
以我的博客为例
1 | hexo robots.txt |
允许所有爬虫访问内容
1 | User-Agent: * |
不允许爬虫访问的内容
1 | Disallow: /vendors/ |
函数
class urllib.robotparser.RobotFileParser(url=’’)
核心类通过下面方法读取、解析 通过url访问的robots.txt文件
set_url(url)设定需要读取
robots.txt文件url路径read()读取制定URL路径对应的
robots.txt文件parse(lines)解析参数指定的行
can_fetch(useragent, url)如果
useragent被允许抓取url对应的robots.txt文件中包含了允许的规则,则返回Truemtime()返回最后一次抓取
robots.txt文件的时间。这是一个对长时间运行的网络爬虫用检查周期性robots.txt文件是否更新的很有用的方法。modified()设定最后一次抓取
robots.txt文件的时间。crawl_delay(useragent)返回 从
robots.txt中useragent定义的Crawl-delay的值。如果没有这个参数或 在useragent中声明的参数格式不正确,返回None。3.6 新版功能.
request_rate(useragent)返回作为
命名元组类型的从 robots.txt 文件中 定义的Request-rate参数内容。如果没有这个参数或在 robots.txt 文件中定义的useragent参数格式不正确,则返回None。3.6 新版功能.
site_maps()返回
list()类型的Sitemap参数内容。如果参数不存在或参数格式不正确,都返回None。
官方栗子
1 | import urllib.robotparser |
分析知乎
1 | """ |
分析我自己博客
1 | import urllib.robotparser |