robots协议的玩转经验

上传人:飞*** 文档编号:47694891 上传时间:2018-07-04 格式:PDF 页数:11 大小:539.30KB
返回 下载 相关 举报
robots协议的玩转经验_第1页
第1页 / 共11页
robots协议的玩转经验_第2页
第2页 / 共11页
robots协议的玩转经验_第3页
第3页 / 共11页
robots协议的玩转经验_第4页
第4页 / 共11页
robots协议的玩转经验_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《robots协议的玩转经验》由会员分享,可在线阅读,更多相关《robots协议的玩转经验(11页珍藏版)》请在金锄头文库上搜索。

1、winacm: 谈谈 robots协议的玩转经验2013 年 2 月 8 日北京市第一中级人民法院正式受理了百度诉奇虎360 违反“Robots 协议” 抓取、复制其网站内容的不正当竞争行为一案,索赔金额高达一亿元。这可以看做 2012 年下半年 “ 3B 大战” 的继续。在此次索赔案件中,百度称自己的 robots 文本中已设定不允许360 爬虫进入(确实也是如此),而360 的爬虫依然对 “ 百度知道 ” 、“ 百度百科 ” 等内容进行抓取 倩碧小黄油 。其实早在 2012 年 11 月初,针对双方摩擦加剧的情况,在中国互联网协会的牵头下,包括百度、新浪、奇虎 360 在内的 12 家互联

2、网公司已共同签署了 互联网搜索引擎服务自律公约,在公约第七条承诺“ 遵循国际通行的行业惯例与商业规则,遵守机器人协议(robots 协议)。今天就找个机会聊聊 妊娠纹霜 一夜成名的 robots 协议。初识 robots协议一、什么是 robots要了解 robots 协议首先要了解robots ,本文说的 robots 不是 I,robot里的威尔 史密斯,不是倩碧三部曲 机器人总动员 里的瓦力和伊娃, 不是终结者系列中的施瓦辛格。 什么?这些经典电影你都不知道 ?好吧,算我想多了。本文的 robots 特指搜索引擎领域的web robots ,这个名字可能很多人不熟悉,但是提到 Web W

3、anderers ,Crawlers 和 Spiders 很多人可能就恍然大悟了,在中文里我们统称为爬虫或者网络爬虫,也就是搜索引擎抓取互联网网页的程序。同学们都知道网页是通过超级链接互相关联起来的,从而形成了网页的网状结构。爬虫的工作方式就像蜘蛛在网上沿着链接爬来爬去,最基本的流程可以简化如下:1.喂给爬虫一堆 url,我们称之为种子 (seeds) 2.爬虫抓取 seeds,解析 html 网页,抽取其中的超级链接3.爬虫接着抓取这些新发现的链接指向的网页2,3 循环往复二、什么是 robots 协议了解了上面的流程就能看到对爬虫来说网站非常被动,只有老老实实被抓取的份。存在这样的需求:1

4、.某些路径下是个人隐私或者网站管理使用,不想被搜索引擎抓取,比如说日本爱情动作片(玩笑话,呵呵)2.不喜欢某个搜索引擎,不愿意被他抓取,最有名的就是之前淘宝不希望被百度抓取3.小网站使用的是公用的虚拟主机,流量有限或者需要付费,希望搜索引擎抓的温柔点4.某些网页是动态生成的,没有直接的链接指向,但是希望内容被搜索引擎抓取和索引网站内容的所有者是网站管理员,搜索引擎应该尊重所有者的意愿,为了满足以上等等, 就需要提供一种网站和爬虫进行沟通的途径,给网站管理员表达自己意愿的机会。 有需求就有供应, robots 协议就此诞生。 Robots 协议,学名叫:The Robots Exclusion

5、Protocol,就搜索引擎抓取网站内容的范围作了约定,包括网站是否希望被搜索引擎抓取,哪些内容不允许被抓取, 把这些内容放到一个纯文本文件 robots.txt 里,然后放到站点的根目录下。爬虫抓取网站内容前会先抓取 robots.txt ,据此“ 自觉地 ” 抓取或者不抓取该网页内容, 其目的是保护网站数据和敏感信息、确保用户个人信息和隐私不被侵犯。需要注意的是robots 协议并非是规范,只是行业内一个约定俗成的协议。什么意思呢 ?Robots 协议不是什么技术壁垒, 而只是一种互相尊重的协议, 好比私家花园的门口挂着 “ 闲人免进 ” , 尊重者绕道而行, 不尊重者依然可以推门而入,比

6、如说 360。 因此不要错误的认为只要在网站下定义了robots.txt 爬虫就不抓取,这个取决于该蜘蛛是否遵循robots 协议。说了这么多,看几个有名的例子感觉一下先:例 1:淘宝User-agent: Baiduspider Disallow: / User-agent: baiduspider Disallow: / 程序猿,你懂的。这不就是淘宝不想让百度抓取例 2:京东User-agent: * Disallow: /?* Disallow: /pop/*.html User-agent: EtaoSpider Disallow: / 这个也不复杂,京东有2 个目录不希望所有搜索引擎

7、来抓。同时,对etao完全屏蔽。三、基本玩法1、robots.txt的位置说简单也简单, robots.txt放到一个站点的根目录下即可。说复杂也有点小复杂,一个 robots.txt 只能控制相同协议, 相同端口,相同站点的网页抓取策略。什么意思呢 ?看个例子最清楚:百度网页搜索百度知道这两个 robots.txt 的内容是不同的,也就是说百度网页搜索和百度知道的抓取策略可以由自己独立的robots.txt 来控制,井水不犯河水。2、robots.txt的内容最简单的 robots.txt 只有两条规则:1.User-agent :指定对哪些爬虫生效2.Disallow :指定要屏蔽的网址整

8、个文件分为 x 节,一节由 y 个 User-agent 行和 z 个 Disallow 行组成。一节就表示对 User-agent 行指定的 y 个爬虫屏蔽 z 个网址。 这里 x=0, y0, z0。x=0 时即表示空文件,空文件等同于没有robots.txt 。下面详细介绍这两条规则:User-agent爬虫抓取时会声明自己的身份,这就是User-agent ,没错,就是 http 协议里的 User-agent 。robots.txt 利用 User-agent 来区分各个引擎的爬虫。举例说明: google 网页搜索爬虫的 User-agent 为 Googlebot ,下面这行就指

9、定 google 的爬虫。User-agent :Googlebot 如果想指定所有的爬虫怎么办?不可能穷举啊,可以用下面这一行:User-agent: * 可能有的同学要问了, 我怎么知道爬虫的 User-agent 是什么 ?这里提供了一个简单的列表: 爬虫列表当然,你还可以查相关搜索引擎的资料得到官方的数据,比如说google 爬虫列表 ,百度爬虫列表DisallowDisallow 行列出的是要拦截的网页,以正斜线(/) 开头,可以列出特定的网址或模式。要屏蔽整个网站,使用正斜线即可:Disallow: / 要屏蔽某一目录以及其中的所有内容,在目录名后添加正斜线:Disallow: /

10、 无用目录名 / 要屏蔽某个具体的网页,就指出这个网页。Disallow: / 网页.html Disallow 还可以使用前缀和通配符。要屏蔽目录 a1-a100 ,可以使用上面的方式写100 行,或者Disallow :/a 但是需要注意, 这样会把任何以 a 开头的目录和文件也屏蔽, 慎用。如果需要屏蔽 a1-a100 ,但是不屏蔽a50,怎么办 ?同学们可以思考一下,这个问题我们留到下一节。要阻止特定类型的文件 (如 .gif) ,请使用以下内容:Disallow: /*.gif$ *匹配任意个字符, $匹配 url 结束,具体就不解释了吧,不了解的同学去自学一下通配符。提示一下,Di

11、sallow 的内容区分大小写。 例如,Disallow: /junkfile.asp 会屏蔽 junkfile.asp ,却会允许 Junk_file.asp 。最最后,通配符不是所有搜索引擎都支持,使用要小心。没办法,谁让robots.txt 没有一个大家都承认的标准呢。实例 #百度网页搜索User-agent: Baiduspider Disallow: /baidu Disallow: /s? User-agent: Googlebot Disallow: /baidu Disallow: /s? Disallow: /shifen/ Disallow: /homepage/ Disa

12、llow: /cpro User-agent: MSNBot Disallow: /baidu Disallow: /s? Disallow: /shifen/ Disallow: /homepage/ Disallow: /cpro . 现在读懂这个应该毫无压力了吧,顺便说一句百度的robots.txt比较啰嗦,有兴趣的同学可以简化一下。3、高阶玩法首先声明:高级玩法不是所有引擎的爬虫都支持,一般来说, 作为搜索引擎技术领导者的谷歌支持的最好。例子: google robots.txtallow还记得上面的问题吗 ?如果需要屏蔽 a1-a100 ,但是不屏蔽 a50,怎么办 ? 方案 1:D

13、isallow :/a1/ Disallow :/a2/ . Disallow :/a49/ Disallow :/a51/ . Disallow :/a100/ 方案 2:Disallow :/a Allow:/a50/ ok,allow 大家会用了吧。顺便说一句,如果想屏蔽a50 下面的文件 private.html ,咋整 ? Disallow :/a Allow:/a50/ Disallow :/a50/private.html 聪明的你一定能发现其中的规律,对吧?谁管的越细就听谁的。sitemap前面说过爬虫会通过网页内部的链接发现新的网页。但是如果没有连接指向的网页怎么办 ?或者用

14、户输入条件生成的动态网页怎么办?能否让网站管理员通知搜索引擎他们网站上有哪些可供抓取的网页?这就是sitemap ,最简单的Sitepmap 形式就是 XML 文件,在其中列出网站中的网址以及关于每个网址的其他数据 (上次更新的时间、更改的频率以及相对于网站上其他网址的重要程度等等),利用这些信息搜索引擎可以更加智能地抓取网站内容。sitemap 是另一个话题,足够开一篇新的文章聊的,这里就不展开了,有兴趣的同学可以参考sitemap新的问题来了, 爬虫怎么知道这个网站有没有提供sitemap 文件,或者说网站管理员生成了 sitemap ,(可能是多个文件 ),爬虫怎么知道放在哪里呢? 由于

15、 robots.txt 的位置是固定的,于是大家就想到了把sitemap 的位置信息放在 robots.txt 里。这就成为 robots.txt 里的新成员了。节选一段 google robots.txt :Sitemap: http:/ Sitemap: http:/ 插一句,考虑到一个网站的网页众多,sitemap 人工维护不太靠谱, google提供了工具可以自动生成sitemap 。meta tag其实严格来说这部分内容不属于robots.txt ,不过也算非常相关,我也不知道放哪里合适,暂且放到这里吧。robots.txt的初衷是为了让网站管理员管理可以出现在搜索引擎里的网站内容。

16、但是,即使使用robots.txt 文件让爬虫无法抓取这些内容,搜索引擎也可以通过其他方式找到这些网页并将它添加到索引中。例如,其他网站仍可能链接到该网站。因此,网页网址及其他公开的信息(如指向相关网站的链接中的定位文字或开放式目录管理系统中的标题)有可能会出现在引擎的搜索结果中。如果想彻底对搜索引擎隐身那咋整呢?答案是:元标记,即meta tag 。比如要完全阻止一个网页的内容列在搜索引擎索引中(即使有其他网站链接到此网页 ),可使用noindex 元标记。只要搜索引擎查看该网页,便会看到noindex 元标记并阻止该网页显示在索引中, 这里注意 noindex 元标记提供的是一种逐页控制对网站的访问的方式。举例:要防止所有搜索引擎将网站中的网页编入索引,在网页的部分添

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号