限制搜索引擎爬虫(Search Engine Robot)的访问

所索引擎爬虫的任务主要是两个:

  1. 获取网站页面的内容,以进行索引
  2. 获取当前页面中的链接,以进行递归爬取

对于搜索引擎爬虫的访问,有时你会希望对它进行一些限制。比如:

  • 禁止爬取你的网站
  • 禁止爬取某些页面
  • 禁止爬取某些链接

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>