urllib.robotparser

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'))
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章