网站的管理者们通常会有这样一种心态:一方面期待百度、Google这样的搜索引擎来抓取网站的内容,另一方面又很厌恶其他来路不明的网络爬虫抓取自己的信息。正是因为这样,才有“好爬虫”、“坏爬虫”这样的说法。
提到“好爬虫”,就不得不提网络爬虫与web之间的访问授权协议——Robots协议了。
Robots协议的定义
Robots协议(也称为爬虫协议、机器人协议等)的全称是“网络爬虫排除标准”(Robots Exclusion Protocol),网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。
根据协议,网站管理员可以在网站域名的根目录下放一个robots.txt 文本文件,里面可以指定不同的网络爬虫能访问的页面和禁止访问的页面,指定的页面由正则表达式表示。网络爬虫在采集这个网站之前,首先获取到这个文件,然后解析到其中的规则,然后根据规则来采集网站的数据。
注意,这个协议的存在更多的是需要网络爬虫去遵守,而起不到防止爬虫的功能。
为什么需要Robots协议
互联网上的网页是通过超级链接互相关联起来的,从而形成了网页的网状结构。爬虫的工作方式就像蜘蛛在网上沿着链接爬来爬去,最基本的流程可以简化如下:
-
喂给爬虫一堆url,我们称之为种子(seeds);
-
爬虫抓取seeds,解析html网页,抽取其中的超级链接;
-
爬虫接着抓取这些新发现的链接指向的网页。
步骤2和步骤3循环往复。
了解了上面的流程就能发现:对爬虫来说网站非常被动,只有老老实实被抓取的份。
所以,对于网站的管理者来说,就存在这样的需求:
-
某些路径下是个人隐私或者网站管理使用,不想被搜索引擎抓取,比如说日本爱情动作片;
-
不喜欢某个搜索引擎,不愿意被他抓取,最有名的就是之前淘宝不希望被百度抓取;
-
小网站使用的是公用的虚拟主机,流量有限或者需要付费,希望搜索引擎抓的温柔点;
-
某些网页是动态生成的,没有直接的链接指向,但是希望内容被搜索引擎抓取和索引。
网站内容的所有者是网站管理员,搜索引擎应该尊重所有者的意愿,为了满足以上等等,就需要提供一种网站和爬虫进行沟通的途径,给网站管理员表达自己意愿的机会。有需求就有供应,robots协议就此诞生。