




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
winacm:谈谈robots协议的玩转经验2013年2月8日北京市第一中级人民法院正式受理了百度诉奇虎360违反“Robots协议”抓取、复制其网站内容的不正当竞争行为一案,索赔金额高达一亿元。这可以看做2012年下半年“3B大战”的继续。在此次索赔案件中,百度称自己的robots文本中已设定不允许360爬虫进入(确实也是如此),而360的爬虫依然对“百度知道”、“百度百科”等内容进行抓取倩碧小黄油。其实早在2012年11月初,针对双方摩擦加剧的情况,在中国互联网协会的牵头下,包括百度、新浪、奇虎360在内的12家互联网公司已共同签署了互联网搜索引擎服务自律公约,在公约第七条承诺“遵循国际通行的行业惯例与商业规则,遵守机器人协议(robots协议)。今天就找个机会聊聊妊娠纹霜一夜成名的robots协议。初识robots协议一、什么是robots要了解robots协议首先要了解robots,本文说的robots不是I,robot里的威尔史密斯,不是倩碧三部曲机器人总动员里的瓦力和伊娃,不是终结者系列中的施瓦辛格。什么?这些经典电影你都不知道?好吧,算我想多了。本文的robots特指搜索引擎领域的web robots,这个名字可能很多人不熟悉,但是提到Web Wanderers,Crawlers和Spiders很多人可能就恍然大悟了,在中文里我们统称为爬虫或者网络爬虫,也就是搜索引擎抓取互联网网页的程序。同学们都知道网页是通过超级链接互相关联起来的,从而形成了网页的网状结构。爬虫的工作方式就像蜘蛛在网上沿着链接爬来爬去,最基本的流程可以简化如下:1.喂给爬虫一堆url,我们称之为种子(seeds)2.爬虫抓取seeds,解析html网页,抽取其中的超级链接3.爬虫接着抓取这些新发现的链接指向的网页2,3循环往复二、什么是robots协议了解了上面的流程就能看到对爬虫来说网站非常被动,只有老老实实被抓取的份。存在这样的需求:1.某些路径下是个人隐私或者网站管理使用,不想被搜索引擎抓取,比如说日本爱情动作片(玩笑话,呵呵)2.不喜欢某个搜索引擎,不愿意被他抓取,最有名的就是之前淘宝不希望被百度抓取3.小网站使用的是公用的虚拟主机,流量有限或者需要付费,希望搜索引擎抓的温柔点4.某些网页是动态生成的,没有直接的链接指向,但是希望内容被搜索引擎抓取和索引网站内容的所有者是网站管理员,搜索引擎应该尊重所有者的意愿,为了满足以上等等,就需要提供一种网站和爬虫进行沟通的途径,给网站管理员表达自己意愿的机会。有需求就有供应,robots协议就此诞生。Robots协议,学名叫:The Robots Exclusion Protocol,就搜索引擎抓取网站内容的范围作了约定,包括网站是否希望被搜索引擎抓取,哪些内容不允许被抓取,把这些内容放到一个纯文本文件robots.txt里,然后放到站点的根目录下。爬虫抓取网站内容前会先抓取robots.txt,据此“自觉地”抓取或者不抓取该网页内容,其目的是保护网站数据和敏感信息、确保用户个人信息和隐私不被侵犯。需要注意的是robots协议并非是规范,只是行业内一个约定俗成的协议。什么意思呢?Robots协议不是什么技术壁垒,而只是一种互相尊重的协议,好比私家花园的门口挂着“闲人免进”,尊重者绕道而行,不尊重者依然可以推门而入,比如说360。因此不要错误的认为只要在网站下定义了robots.txt爬虫就不抓取,这个取决于该蜘蛛是否遵循robots协议。说了这么多,看几个有名的例子感觉一下先:例1:淘宝User-agent: BaiduspiderDisallow: /User-agent: baiduspiderDisallow: /程序猿,你懂的。这不就是淘宝不想让百度抓取例2:京东User-agent: *Disallow: /?*Disallow: /pop/*.htmlUser-agent: EtaoSpiderDisallow: /这个也不复杂,京东有2个目录不希望所有搜索引擎来抓。同时,对etao完全屏蔽。三、基本玩法1、robots.txt的位置说简单也简单,robots.txt放到一个站点的根目录下即可。说复杂也有点小复杂,一个robots.txt只能控制相同协议,相同端口,相同站点的网页抓取策略。什么意思呢?看个例子最清楚:百度网页搜索百度知道这两个robots.txt的内容是不同的,也就是说百度网页搜索和百度知道的抓取策略可以由自己独立的robots.txt来控制,井水不犯河水。2、robots.txt的内容最简单的robots.txt只有两条规则:1.User-agent:指定对哪些爬虫生效2.Disallow:指定要屏蔽的网址整个文件分为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,下面这行就指定google的爬虫。User-agent:Googlebot如果想指定所有的爬虫怎么办?不可能穷举啊,可以用下面这一行:User-agent: *可能有的同学要问了,我怎么知道爬虫的User-agent是什么?这里提供了一个简单的列表:爬虫列表当然,你还可以查相关搜索引擎的资料得到官方的数据,比如说google爬虫列表,百度爬虫列表DisallowDisallow 行列出的是要拦截的网页,以正斜线 (/) 开头,可以列出特定的网址或模式。要屏蔽整个网站,使用正斜线即可:Disallow: /要屏蔽某一目录以及其中的所有内容,在目录名后添加正斜线:Disallow: /无用目录名/要屏蔽某个具体的网页,就指出这个网页。Disallow: /网页.htmlDisallow还可以使用前缀和通配符。要屏蔽目录a1-a100,可以使用上面的方式写100行,或者Disallow:/a但是需要注意,这样会把任何以a开头的目录和文件也屏蔽,慎用。如果需要屏蔽a1-a100,但是不屏蔽a50,怎么办?同学们可以思考一下,这个问题我们留到下一节。要阻止特定类型的文件(如 .gif),请使用以下内容:Disallow: /*.gif$*匹配任意个字符,$匹配url结束,具体就不解释了吧,不了解的同学去自学一下通配符。提示一下,Disallow的内容区分大小写。例如,Disallow: /junkfile.asp 会屏蔽 junkfile.asp,却会允许Junk_file.asp。最最后,通配符不是所有搜索引擎都支持,使用要小心。没办法,谁让robots.txt没有一个大家都承认的标准呢。实例 #百度网页搜索User-agent: BaiduspiderDisallow: /baiduDisallow: /s?User-agent: GooglebotDisallow: /baiduDisallow: /s?Disallow: /shifen/Disallow: /homepage/Disallow: /cproUser-agent: MSNBotDisallow: /baiduDisallow: /s?Disallow: /shifen/Disallow: /homepage/Disallow: /cpro.现在读懂这个应该毫无压力了吧,顺便说一句百度的robots.txt比较啰嗦,有兴趣的同学可以简化一下。3、高阶玩法首先声明:高级玩法不是所有引擎的爬虫都支持,一般来说,作为搜索引擎技术领导者的谷歌支持的最好。例子:google robots.txtallow还记得上面的问题吗?如果需要屏蔽a1-a100,但是不屏蔽a50,怎么办?方案1:Disallow:/a1/Disallow:/a2/.Disallow:/a49/Disallow:/a51/.Disallow:/a100/方案2:Disallow:/aAllow:/a50/ok,allow大家会用了吧。顺便说一句,如果想屏蔽a50下面的文件private.html,咋整?Disallow:/aAllow:/a50/Disallow:/a50/private.html聪明的你一定能发现其中的规律,对吧?谁管的越细就听谁的。sitemap前面说过爬虫会通过网页内部的链接发现新的网页。但是如果没有连接指向的网页怎么办?或者用户输入条件生成的动态网页怎么办?能否让网站管理员通知搜索引擎他们网站上有哪些可供抓取的网页?这就是sitemap,最简单的 Sitepmap 形式就是 XML 文件,在其中列出网站中的网址以及关于每个网址的其他数据(上次更新的时间、更改的频率以及相对于网站上其他网址的重要程度等等),利用这些信息搜索引擎可以更加智能地抓取网站内容。sitemap是另一个话题,足够开一篇新的文章聊的,这里就不展开了,有兴趣的同学可以参考sitemap新的问题来了,爬虫怎么知道这个网站有没有提供sitemap文件,或者说网站管理员生成了sitemap,(可能是多个文件),爬虫怎么知道放在哪里呢?由于robots.txt的位置是固定的,于是大家就想到了把sitemap的位置信息放在robots.txt里。这就成为robots.txt里的新成员了。节选一段google robots.txt:Sitemap: /culturalinstitute/sitemaps/www_google_com_culturalinstitute/sitemap-index.xmlSitemap: /hostednews/sitemap_index.xml插一句,考虑到一个网站的网页众多,sitemap人工维护不太靠谱,google提供了工具可以自动生成sitemap。meta tag其实严格来说这部分内容不属于robots.txt,不过也算非常相关,我也不知道放哪里合适,暂且放到这里吧。robots.txt的初衷是为了让网站管理员管理可以出现在搜索引擎里的网站内容。但是,即使使用 robots.txt 文件让爬虫无法抓取这些内容,搜索引擎也可以通过其他方式找到这些网页并将它添加到索引中。例如,其他网站仍可能链接到该网站。因此,网页网址及其他公开的信息(如指向相关网站的链接中的定位文字或开放式目录管理系统中的标题)有可能会出现在引擎的搜索结果中。如果想彻底对搜索引擎隐身那咋整呢?答案是:元标记,即meta tag。比如要完全阻止一个网页的内容列在搜索引擎索引中(即使有其他网站链接到此网页),可使用 noindex 元标记。只要搜索引擎查看该网页,便会看到 noindex 元标记并阻止该网页显示在索引中,这里注意noindex元标记提供的是一种逐页控制对网站的访问的方式。举例:要防止所有搜索引擎将网站中的网页编入索引,在网页的部分添加:这里的name取值可以设置为某个搜索引擎的User-agent从而指定屏蔽某一个搜索引擎。除了noindex外,还有其他元标记,比如说nofollow,禁止爬虫从此页面中跟踪链接。详细信息可以参考Google支持的元标记,这里提一句:noindex和nofollow在HTML 4.01规范里有描述,但是其他tag的在不同引擎支持到什么程度各不相同,还请读者自行查阅各个引擎的说明文档。Crawl-delay除了控制哪些可以抓哪些不能抓之外,robots.txt还可以用来控制爬虫抓取的速率。如何做到的呢?通过设置爬虫在两次抓取之间等待的秒数。Crawl-delay:5表示本次抓取后下一次抓取前需要等待5秒。注意:google已经不支持这种方式了,在webmaster tools里提供了一个功能可以更直观的控制抓取速率。这里插一句题外话,几年前我记得曾经有一段时间robots.txt还支持复杂的参数:Visit-time,只有在visit-time指定的时间段里,爬虫才可以访问;Request-rate: 用来限制URL的读取频率,用于控制不同的时间段采用不同的抓取速率。后来估计支持的人太少,就渐渐的废掉了,有兴趣的同学可以自行google。我了解到的是目前google和baidu都已经不支持这个规则了,其他小的引擎公司貌似从来都没有支持过。如果确有支持那是我孤陋寡闻了,欢迎留言告知。四、真的有用?好吧,到此为止robots.txt相关的东东介绍的也七七八八了,能坚持看到这里的同学估计都跃跃欲试了,可惜,我要泼盆冷水,能完全指望robots.txt保护我们网站的内容吗?不一定。否则百度和360就不用打官司了。协议一致性第一个问题是robots.txt没有一个正式的标准,各个搜索引擎都在不断的扩充robots.txt功能,这就导致每个引擎对robots.txt的支持程度各有不同,更不用说在某个功能上的具体实现的不同了。缓存第二个问题是robots.txt本身也是需要抓取的,出于效率考虑,一般爬虫不会每次抓取网站网页前都抓一下robots.txt,加上robots.txt更新不频繁,内容需要解析。通常爬虫的做法是先抓取一次,解析后缓存下来,而且是相当长的时间。假设网站管理员更新了robots.txt,修改了某些规则,但是对爬虫来说并不会立刻生效,只有当爬虫下次抓取robots.txt之后才能看到最新的内容。尴尬的是,爬虫下次抓取robots.txt的时间并不是由网站管理员
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 海南省乐东黎族自治县2025年上半年公开招聘村务工作者试题含答案分析
- 2025年生态园林树木种植与养护服务合同
- 2025范文企业数字化转型咨询服务合同范本
- 2025版电商品牌独家销售授权合作协议
- 贵州省正安县2025年上半年事业单位公开遴选试题含答案分析
- 2025年度数字文化遗产数字化加工保密合同
- 贵州省金沙县2025年上半年公开招聘城市协管员试题含答案分析
- 贵州省务川仡佬族苗族自治县2025年上半年事业单位公开遴选试题含答案分析
- 2025年互联网金融质押担保合同范本
- 2025不锈钢管材批量采购及加工服务合同
- 2025-2030中国重水市场运行态势与未来竞争力剖析报告
- 煤粉锅炉培训课件
- 2025年小学体育课程标准考试测试卷及参考答案
- 建筑业标准员培训
- CNC初级技术员考试试题及答案
- GB 17051-2025二次供水设施卫生规范
- 2025年普通高等学校招生全国统一考试数学试题(天津卷)含答案
- 生产部三级管理制度
- 2025-2030年中国挂耳咖啡行业发展趋势与投资战略研究报告
- 2026版步步高大一轮高考数学复习第四章 §4.1 任意角和弧度制、三角函数的概念含答案
- IT数据中心运营运维服务外包项目技术方案
评论
0/150
提交评论