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
文件中包含了允许的规则,则返回True
mtime
()返回最后一次抓取
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 |