Robots协议
Robots协议也称为爬虫协议或者机器人协议,全名为网络爬虫排除标准,告诉爬虫哪些可以抓取,哪些不可以。通常会有一个名为robots.txt.的文件,放在网站的根目录下。
爬虫访问站点,会先检索是否有机器人协议,根据协议内容进行爬取。
robots.txt样例:
User-agent: *
Disallow: /
Allow: /public/
表示对所有爬虫(*)限制只允许爬取public目录的功能。
User-agent表示受限爬虫的名称,有且至少有一个。
Disallow表示禁止爬取的页面,设置为/表示不允许抓取所有页面,为空表示不设限。
Allow一般和Disallow一起使用,用来排除某些限制。
只允许一个爬虫爬取所有网页
User-agent: WebCrawler
Disallow:
User-agent: *
Disallow: /
爬虫名称
爬虫名称都是固定好的,比如百度就是BaiduSpider
robotparser
可以使用robotparser模块解析robots.txt,这个模块提供了一个类RobotFileParser,传入robots.txt的链接就行。
urllib.robotparser.RobotFileParser(url=’’)
url默认为空,可以提前填写,也可以使用set_url方法设置也行。
- set_url():用来设置robots.txt的链接。
- read():读取robots.txt文件并进行分析,如果不调用这个方法,之后的判断都会为False,调用这个方法不会返回任何值。
- parse():解析robots.txt文件。
- can_fetch():这个方法有两个参数,第一个是User-agent,第二个是要抓取的URL,返回的内容是该搜索引擎是否可以抓取这个URL,返回结果是True或者False
- mtime():返回上次抓取和分析robots.txt的时间。
- modified():将当前时间设置为上次抓取和分析robots.txt的时间。