限制搜索引擎爬虫(Search Engine Robot)的访问
所索引擎爬虫的任务主要是两个:
- 获取网站页面的内容,以进行索引
- 获取当前页面中的链接,以进行递归爬取
对于搜索引擎爬虫的访问,有时你会希望对它进行一些限制。比如:
- 禁止爬取你的网站
- 禁止爬取某些页面
- 禁止爬取某些链接
1. robots.txt
根据约定,爬虫会首先访问网站根目录下面的robots.txt
文件,读取其中描述的爬虫规则。
换句话说,爬虫会访问http://www.your-site.com/robots.txt
来获取爬虫规则。
禁止所有爬虫
User-agent: *
Disallow: /
禁止特定爬虫和特定路径
User-agent: BadBot
User-agent: Googlebot
Disallow: /private/
2. HTTP响应头
X-Robots-Tag: noindex
作用可以参见下面的meta标签部分。放在HTTP相应头中,可以让爬虫不必解析页面内容就知道如何处理当前页面。
3. meta 标签
<meta name="robots" content="noindex, nofollow" >
默认的行为可以认为是index
+follow
,即索引当前页面的同时也跟随当前页面上的链接。
- noindex: 不索引当前页面
- nofollow: 不跟随(尝试爬取)当前页面上的链接
4. HTML代码
<noindex>不要索引这里的内容</noindex>
<div class="robots-noindex">不要索引这里的内容</div>
5. rel="noflollow"
除了"robots.txt"文件可以在爬虫发起页面请求之前“阻止”其爬取某个URL之外,
也可以在HTML的链接代码中添加rel="nofollow"
属性来阻止爬虫爬取该链接。
- "robots.txt"可以认为是全局的,粗粒度的规则
- "nofollow"是局部的,细粒度的规则
<a href="/some/link" rel="nofollow">不要爬取这个链接</a>