一、什么是robots协议
robots是网站跟爬虫间的协议,robots协议又称爬虫协议、爬虫规则等,是指网站可建立一个robots.txt文件来告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取,而搜索引擎则通过读取robots.txt文件来识别这个页面是否允许被抓取。
搜索引擎使用spider程序自动访问互联网上的网页并获取网页信息, robots文件 是站点与spider沟通的重要渠道。当一个搜索蜘蛛访问一个站点时,它会首先检查该站点根目录下是否存在robots.txt文件,如果存在,搜索机器人就会按照该文件中的内容来确定访问的范围;如果该文件不存在,所有的搜索蜘蛛将能够访问网站上所有没有被口令保护的页面。但是,这个robots协议不是防火墙,也没有强制执行力,搜索引擎完全可以忽视robots文件去抓取网页的快照。robots协议并不是一个规范,而只是约定俗成的,所以并不能保证网站的隐私。
二、robots协议的由来
robots.txt并不是某一个公司制定的,而是早在20世纪93、94年就早已出现,当时还没有Google。真实Robots协议的起源,是在互联网从业人员的公开邮件组里面讨论并且诞生的。即便是今天,互联网领域的相关问题也仍然是在一些专门的邮件组中讨论,并产生(主要是在美国)。
1994年6月30日,在经过搜索引擎人员以及被搜索引擎抓取的网站站长共同讨论后,正式发布了一份行业规范,即robots.txt协议。在此之前,相关人员一直在起草这份文档,并在世界互联网技术邮件组发布后,这一协议被几乎所有的搜索引擎采用,包括最早的altavista,infoseek,后来的google,bing,以及中国的百度,搜搜,搜狗等公司也相继采用并严格遵循。
Robot,又称Spider,是搜索引擎自动获取网页信息的电脑程序的通称。Robots协议的核心思想就是要求Robot程序不要去检索那些站长们不希望被直接搜索到的内容。将约束Robot程序的具体方法规范成格式代码,就成了Robots协议。一般来说,网站是通过Robots.txt文件来实现Robots协议。
自有搜索引擎之日起,Robots协议已是一种目前为止最有效的方式,用自律维持着网站与搜索引擎之间的平衡,让两者之间的利益不致过度倾斜。它就像一个钟摆,让互联网上的搜索与被搜索和谐相处。
三、robots文件放在哪里
文件应该放置在网站根目录下。 举例来说,当spider访问一个网站(比如)时,首先会检查该网站中是否存在这个文件,如果 Spider找到这个文件,它就会根据这个文件的内容,来确定它访问权限的范围。如果没有发现robots.txt文件,蜘蛛就会爬行所有的文件,增加了很多没有意义的操作,增加了蜘蛛的工作量。
网站URL | 相应的robots.txt的URL |
*robots文件存放位置
四、robots协议的格式
robots协议往往放置于根目录下,包含一条或更多的记录,这些记录通过空行分开(以CR,CR/NL, or NL作为结束符),每一条记录的格式如下所示:
在该文件中可以使用#进行注解,具体使用方法和UNIX中的惯例一样。该文件中的记录通常以一行或多行User-agent开始,后面加上若干Disallow和Allow行,详细情况如下:
User-agent: 该项的值用于描述搜索引擎robot的名字。在"robots.txt"文件中,如果有多条User-agent记录说明有多个robot会受到"robots.txt"的限制,对该文件来说,至少要有一条User-agent记录。如果该项的值设为*,则对任何robot均有效,在"robots.txt"文件中,"User-agent:*"这样的记录只能有一条。如果在"robots.txt"文件中,加入"User-agent:SomeBot"和若干Disallow、Allow行,那么名为"SomeBot"只受到"User-agent:SomeBot"后面的 Disallow和Allow行的限制。
该项的值用于描述不希望被访问的一组URL,这个值可以是一条完整的路径,也可以是路径的非空前缀,以Disallow项的值开头的URL不会被 robot访问。例如"Disallow:/help"禁止robot访问/help.html、/helpabc.html、/help/index.html,而"Disallow:/help/"则允许robot访问/help.html、/helpabc.html,不能访问/help/index.html。"Disallow:"说明允许robot访问该网站的所有url,在"/robots.txt"文件中,至少要有一条Disallow记录。如果"/robots.txt"不存在或者为空文件,则对于所有的搜索引擎robot,该网站都是开放的。
该项的值用于描述希望被访问的一组URL,与Disallow项相似,这个值可以是一条完整的路径,也可以是路径的前缀,以Allow项的值开头的URL 是允许robot访问的。例如"Allow:/hibaidu"允许robot访问/hibaidu.htm、/hibaiducom.html、/hibaidu/com.html。一个网站的所有URL默认是Allow的,所以Allow通常与Disallow搭配使用,实现允许访问一部分网页同时禁止访问其它所有URL的功能。
使用"*"and"$": Baiduspider支持使用通配符"*"和"$"来模糊匹配url。
"*" 匹配0或多个任意字符
"$" 匹配行结束符。
最后需要说明的是:百度会严格遵守robots的相关协议,请注意区分您不想被抓取或收录的目录的大小写,百度会对robots中所写的文件和您不想被抓取和收录的目录做精确匹配,否则robots协议无法生效。
五、robots协议用法与实例
1、robots协议用法
例1、禁止所有所示引擎访问网站任何内容 | User-agent: *Disallow:/ |
例2、允许所有的robot访问(或者也可以建一个空文件“/robots.txt”) | User-agent: *Allow:/ |
例3、仅禁止Baiduspider访问您的网站 | User-agent:BaiduspiderDisallow:/ |
例4、仅允许Baiduspider访问您的网站 | User-agent:BaiduspiderAllow:/User-agent: *Disallow:/ |
例5、仅允许Baiduspider以及Googlebot访问您的网站 | User-agent:BaiduspiderAllow:/User-agent:GooglebotAllow:/User-agent: *Disallow:/ |
例6、禁止spider访问特定目录在这个例子中,改网站有三个目录对所搜索引擎的访问做了限制,即spider不会访问这3个目录,需要注意的是对每一个目录必须分开声明,而不能写成“Disallow:/cgi-bin/ /temp/”。 | User-agent: *Disallow:/cgi-bin/Disallow:/temp/ |
例7、允许访问特定目录中的部分url | Allow:/temp/hi User-agent: *Allow:/~joe/look Allow:cig-bin/seeDisallow:/cgi-bin/Disallow:/temp/Disallow:/~joe/ |
例8、使用“*”限制访问url禁止访问/cgi-bin/目录下的所有以“.html”为后缀的url(包含子目录) | User-agent: *Disallow:/cgi-bin/*.html |
例9、使用“$”限制访问url仅允许访问以“.html”为后缀的url | Allow:/*.html$ User-agent: *Disallow: |
例10、禁止访问网站中所有的动态页面 | User-agent: *Disallow:/ *?* |
例11、禁止Baiduspider抓取网站上的所有图片仅允许抓取网页,禁止抓取任何图片。 | User-agent:BaiduspiderDisallow:/*.jpg$Disallow:/*.jpeg$Disallow:/*.gif$Disallow:/*.png$Disallow:/*.bmp$ |
例12、仅允许Baiduspider抓取网页和.gif格式图片允许抓取网页和gif格式图片,不允许抓取其他格式图片 | User-agent:BaiduspiderAllow:/*.gif$Disallow:/*.jpg$Disallow:/*.jpeg$Disallow:/*.png$Disallow:/*.bmp$ |
例13、禁止Baiduspider抓取.jpg格式图片 | User-agent:BaiduspiderDisallow:/*.jpg$ |
*百度robots.txt协议用法
、robots.txt文件示例
以下是一个robots.txt文件的完整示例,可拷贝到txt文件做相应修改后使用。
User-agent: *
Disallow:/application/
Disallow:/core/
Disallow:/data/
Disallow:/extend/
Disallow:/public/
Disallow:/static/
Disallow:/vendor/
Disallow:/weapp/
Disallow:/install_1636907738/
Sitemap:
六、Robots.txt 文件在线生成
1、站长工具Robots.txt生成:
2、爱站Robots.txt生成:
七、Robots.txt文件在线检测工具
当写好robots.txt文件就需要检测是否有写,下面提供几款在线工具帮助大家检测robots是否有写错。
1、百度资源Robots.txt检测:/
2、爱站Robots.txt检测工具:
3、站长工具Robots.txt检测:
八、Robots协议使用技巧
1、每当用户试图访问某个不存在的URL时,服务器都会在日志中记录404错误(无法找到文件)。每当搜索蜘蛛来寻找并不存在的robots.txt文件时,服务器也将在日志中记录一条404错误,所以应该在网站中添加一个robots.txt文件。
2、网站管理员必须使蜘蛛程序远离某些服务器上的目录以确保服务器性能。比如:大多数网站服务器都有程序储存在"cgi-bin"目录下,因此在robots.txt文件中加入"Disallow: /cgi-bin",这样能够避免将所有程序文件被蜘蛛索引,可以节省服务器资源。一般网站中不需要蜘蛛抓取的文件有:后台管理文件、程序脚本、附件、数据库文件、编码文件、样式表文件、模板文件、导航图片和背景图片等等。
3. 如果你的网站是动态网页,并且你为这些动态网页创建了静态副本,以供搜索蜘蛛更容易抓取。那么你需要在robots.txt文件里设置避免动态网页被蜘蛛索引,以保证这些网页不会被视为含重复内容。
4、robots.txt文件里还可以直接包括在sitemap文件的链接。比如Sitemap:。这样做的好处就是,站长不用到每个搜索引擎的站长工具去提交自己的sitemap文件,搜索引擎的蜘蛛自己就会抓取robots.txt文件,读取其中的sitemap路径,接着抓取其中相链接的网页。
5、合理使用robots.txt文件还能避免访问时出错。比如,不能让搜索者直接进入购物车页面。因为没有理由使购物车被收录,所以你可以在robots.txt文件里设置来阻止搜索者直接进入购物车页面。
九、Robots文件的作用
、屏蔽网站的空、 死链 接
由于网站内容的修改以及删除,容易导致网站内的一些 内链 失效变为空链或者死链。通常我们会对网站定期检查空链和死链,将这些链接提取出来,写入robots文件之中,防止搜索引擎爬取该链接,间接提升搜索引擎的体验。该种方式是有效的,因为修改已经收录的内容时会使得搜索引擎重新的爬取修改过的网页,再次判断是否进行收录,如果没有继续收录了,那么就得不尝试了。
、防止蜘蛛爬取网站重复内容
因为网站很多的动态页面搜索引擎时无法收录的,所以很多时候我们需要对于这些动态页面进行制定一个静态的页面以助于搜索引擎收录。这时候就让搜索引擎不要爬取某一些重复的内容,可以减少站内的页面关键词权重竞争。
、节省服务器资源,从而提高服务质量
网站上是有很多的内容都是一些无意义的内容,例如网站的各种脚本代码、css文件和php文件等等,这些文件对于 网站优化 都是无意义的,爬取这些网站不仅不会收录,而且还会浪费服务器的资源。上图中很多禁止访问的内容都是这类无意义的文件目录。
、保护网站隐私内容
网站有很多的页面都是有着一定隐私的,例如一个用户接受的推送又或者是购物车等等,这些链接虽然在一个页面之中有,但是显然是不希望搜索引擎爬取的内容。
、有利于网站调试
在网站初步上线前,或者网站改版的时候,都会有着一定的错误,需要一段时间的调试再对搜索引擎开放爬取,在调试期间就可以将robots文件设置为对于所有的搜索引擎都处于拒绝爬取状态,等所有的错误都解决后再修改robots文件。
十、Robots META标签的写法
robots meta标签中没有大小写之分,name="robots"表示所有的搜索引擎,可以针对某个具体搜索引擎写为name="baiduspider"。 content部分有四个指令选项:index、、follow、nofollow,指令间以","分隔。
index 指令告诉搜索机器人抓取该页面;
follow 指令表示搜索机器人可以沿着该页面上的链接继续抓取下去;
robots meta标签的缺省值是index和follow,只有inktomi除外,对于它,缺省值是index,nofollow。
这样,一共有四种组合:
其中
<meta content="index,follow">可以写成<meta content="all">;
<meta content="noindex,nofollow">可以写成<meta content="none">
目前看来,绝大多数的搜索引擎机器人都遵守robots.txt的规则,而对于robots meta标签,目前支持的并不多,但是正在逐渐增加,如著名搜索引擎google就完全支持,而且google还增加了一个指令"archive",可以限制google是否保留网页快照。例如:
表示抓取该站点中页面并沿着页面中链接抓取,但是不在goolge上保留该页面的网页快照。
十一、搜索引擎常见Robots名字
google蜘蛛:googlebot
百度蜘蛛 :baiduspider
yahoo蜘蛛:slurp
alexa蜘蛛:ia_archiver
msn蜘蛛:msnbot
altavista蜘蛛:scooter
lycos蜘蛛:lycos_spider_(t-rex)
alltheweb蜘蛛:fast-webcrawler/
inktomi蜘蛛:slurp
十二、robots协议常见问题
、Robots.Txt文件是必须的吗?
如果你的网站较小,且索引符合你的预期,你可以不要robots.txt文件,主流搜索引擎足够聪明的去识别你的内容。但建议还是要有一个Robots.txt文件,因为搜索引擎访问网站时,首先就是查阅它。
、可以将资源类文件(Css、Js)禁止抓取吗?
不要这么做,因为搜索引擎需要靠资源类文件来解读你的网页。
、网站误封Robots该如何处理?
robots协议是搜索生态中很重要的一个环节,同时也是一个很细节的环节。很多站长同学在网站运营过程中,很容易忽视robots协议的存在,进行错误覆盖或者全部封禁robots,造成不必要损失!
那么如果误操作封禁了robots怎么办?百度搜索引擎处理方式如下:
1、修改Robots封禁为允许,然后到百度搜索资源后台检测并更新Robots。
2、在百度搜索资源后台抓取检测,此时显示抓取失败,没关系,多点击抓取几次,触发蜘蛛抓取站点。
3、在百度搜索资源后台 抓取频次 ,申请抓取频次上调。
4、百度反馈中心,反馈是因为误操作导致了这种情况的发生。
5、百度搜索资源后台链接提交处,设置数据API推送(实时)。
6、更新sitemap 网站地图 ,重新提交百度,每天手动提交一次。
以上处理完,接下来就是等待了,一般3天左右基本回升到正常状态!
总结
优化猩:robots协议在百度、谷歌等主要搜索引擎还是具有实际作用的,如果网站将robots协议写成不允许搜索引擎抓取,那么整个站点的规模不管多大,搜索引擎也不会将搜索结果进行展示,所以站长务必要合理设置好robots.txt文件,使搜索引擎抓取可以正确合理的抓取网站内容,以便网站获得更好的排名。
参考链接:
robots协议_百度百科
robots_百度百科
robots_百度搜索资源平台
2022 最新Robots.txt文件教程-CSDN博客
robots文件怎么写,robots文件对网站优化的作用-格子网络
修改于2023-05-04
网站robots前段时间设置了禁止抓取,网站改版好后把robots里限制抓取的代码删了,为什么还不能正常抓取?
网络会有一定的缓冲期,等快照更新了就好了
今天晚上!百度所有搜吧!我的贴!都不要给我删了!
删除后仍然出现这就涉及到了网络快照的问题,这个问题已经有一段时间了,很多人也都反映过!如果发现搜索结果中有涉及个人隐私或者企业机密的网页,该如何把它们删除?答:网络与这些网页所在的网站无关,网络无权删除他人网站上的网页。 如果您是这些网站的管理员,您可以:·删除这些页面。 在几周之内,这些内容会自动从网络消失。 ·如果您希望这些页面马上消失,请在删除它们之后,用网站联系人信箱将要求发给,经网络核实后,这些页面会很快消失。 ·如果您不希望自己的网站被网络抓取,只需给网站设置一个robots协议,详见禁止搜索引擎收录的方法。 如果您不是这些网站的管理员,您可以:·先联系这些网站的管理员,要求他们删除相关网页。 只要原网站删除,这些内容会在几周内从网络自动消失。 ·如果您希望这些页面马上消失,请先确认该网站已删除指定网页,然后提供身份证明、网站权属证明及详细侵权情况资料,网络在收到上述法律文件后,将会尽快移除被控侵权内容;或者可以要求侵权网站管理员用其网站联系人信箱给发送删除请求,网络在确认后,这些页面会很快消失。
Google和百度的爬虫是用什么语言写的?
每个网站都有一个“爬虫协议”,至少大型网站都会有。 Robots协议(也称为爬虫协议、机器人协议等)的全称是“网络爬虫排除标准”(Robots Exclusion Protocol),网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。 越是大型网站,Robots协议越规范,他们为了提高自己在搜索结果的位置,会针对网络、谷歌等搜素引擎写爬虫协议,而网络等搜索引擎不需要特别针对这些大网站写协议换个角度想,大的搜索引擎就那几个,而所谓“大网站”数不胜数,怎么可能写的过来?如果你没能理解这部分内容,说明你还处在“菜鸟”级别。 一般的爬虫算法是:先查找新地址,用队列或者堆栈来存储新增加的url;然后用爬虫程序从队列或者堆栈中取地址,继续爬虫。 因为这两方面程序执行的速度是不一样的,不是说找到一个url就能立即爬完,或者有时候还没找到新url就已经爬完了,所以分了两个结构。 一般的程序中都会用多个函数来执行一个过程,但这在新手的学习中是不常见到、也是不易搞懂的。 鉴于你提出的问题,我觉得你不到能搞通爬虫程序的阶段,建议你还是从简单的程序开始。 看看这个编程语言入门经典100例【Python版】,希望对你有帮助