urllib.robotparser
文章目录
一、简介
urllib.robotparser,用于实现对网站Robots协议的分析
二、Robots协议
1 概念
Robots协议亦称爬虫协议、机器人协议,用来告诉爬虫和搜索引擎哪些页面可以抓取,哪些不可以抓取。它通常是一个放在网站根目录下的robots.txt文件
2、例子
User-agent: *(搜索爬虫的名称)
Disallow: /
Allow: /public/
3、爬虫名称
BaiduSpider | 百度 |
---|---|
Googlebot | 谷歌 |
360Spider | 360搜索 |
YadaoBot | 有道 |
ia_archiver | Alexa |
Scooter | altavista |
三、robotparser
该模块提供了一个 类 RobotFileParser,它可以根据某网站的 robots.txt 文件来判断一个爬取爬虫是否有权限来爬取这个 网页。
urllib.robotparser.RobotFileParser(url='')
当然,也可以在声明时不传入,默认为空,最后再使用 set_url()方法设置一下也可。 下面介绍了这个类常用的几个方法。
(1)set_url()
用来设置robot.txt文件的链接
(4)read()
读取robot文件并分析,但不返回任何内容
相当于parse+urlopen+read+decode+split
(3)parse()
解析robot内容,传入robot某些行的内容,它会按照robot.txt文件的语法来解析这些内容
(4)can_fetch(User-agent,URL)
返回的内容是搜索引擎是否可以抓取这个URL,True,False
(5)mtime()
返回上次抓取robot.txt文件的时间
(6)modified()
将当前时间设置为上次抓取和分析robots.txt的时间,对长时间分析和抓取的搜索爬虫很有帮助。
from urllib.robotparser import RobotFileParser
from urllib.request import urlopen
#Tab键太好用了,代码自动补全。
url='http://jianshu.com/robots.txt'
#创建对象
rp=RobotFileParser(url)
#rp.set_url(url)
rp.read()
#rp.parse(urlopen(url).read().decode('utf-8').split('\n'))
print(rp.can_fetch('*','http://www.jianshu.com/p/b67554025d7d'))