zoukankan      html  css  js  c++  java
  • 搜索引擎蜘蛛及网站robots.txt文件详解[转载]

    我们知道,搜索引擎都有自己的“搜索机器人”(ROBOTS),并通过这些ROBOTS在网络上沿着网页上的链接(一般是http和src链接)不断抓取资料建立自己的数据库。

    对于网站管理者和内容提供者来说,有时候会有一些站点内容,不希望被ROBOTS抓取而公开。为了解决这个问题,ROBOTS开发界提供了两个办法:一个是robots.txt,另一个是TheRobotsMETA标签。

    注意:robots.txt写法是否正确对搜索引擎抓取网站至关重要,我们尽量按照标准的格式写语句,否则出现的错误可能会导致搜索引擎不能正常爬行站点;我们可以通过google sitemap中的robots.txt检测工具来检查网站上是否存在robots.txt文件以及该文件写法是否正确

    一、robots.txt

    1、什么是robots.txt?

    robots.txt是一个纯文本文件,通过在这个文件中声明该网站中不想被robots访问的部分,这样,该网站的部分或全部内容就可以不被搜索引擎收录了,或者指定搜索引擎只收录指定的内容。

    当一个搜索机器人访问一个站点时,它会首先检查该站点根目录下是否存在robots.txt,如果找到,搜索机器人就会按照该文件中的内容来确定访问的范围,如果该文件不存在,那么搜索机器人就沿着链接抓取。

    robots.txt必须放置在一个站点的根目录下,而且文件名必须全部小写

    网站URL
    相应的robots.txt的URL

    http://www.w3.org/
    http://www.w3.org/robots.txt

    http://www.w3.org:80/
    http://www.w3.org:80/robots.txt

    2、robots.txt的语法

    "robots.txt"文件包含一条或更多的记录,这些记录通过空行分开(以CR,CR/NL,orNL作为结束符),在该文件中可以使用#进行注解,具体使用方法和UNIX中的惯例一样。该文件中的记录通常以一行或多行User-agent开始,后面加上若干Disallow行,详细情况如下:

    User-agent:
    该项的值用于描述搜索引擎robot的名字,在"robots.txt"文件中,如果有多条User-agent记录说明有多个robot会受到该协议的限制,对该文件来说,至少要有一条User-agent记录。如果该项的值设为*,则该协议对任何机器人均有效,在"robots.txt"文件中,"User-agent:*"这样的记录只能有一条。关于搜索引擎robots的名字,请参考文章"搜索引擎蜘蛛程序名称大全"

    Disallow:
    该项的值用于描述不希望被访问到的一个URL,这个URL可以是一条完整的路径,也可以是部分的,任何以Disallow开头的URL均不会被robot访问到。例如"Disallow:/help"对/help.html和/help/index.html都不允许搜索引擎访问,而"Disallow:/help/"则允许robot访问/help.html,而不能访问/help/index.html

    任何一条Disallow记录为空,说明该网站的所有部分都允许被访问,在"robots.txt"文件中,至少要有一条Disallow记录。如果"robots.txt"是一个空文件,则对于所有的搜索引擎robot,该网站都是开放的


    下面是一些robots.txt基本的用法:

    禁止所有搜索引擎访问网站的任何部分:
    User-agent: *
    Disallow: /

    允许所有的robot访问
    User-agent: *
    Disallow:
    或者也可以建一个空文件:robots.txt

    禁止所有搜索引擎访问网站的几个部分(下例中的cgi-bin、tmp、private目录)
    User-agent: *
    Disallow: /cgi-bin/
    Disallow: /tmp/
    Disallow: /private/

    禁止某个搜索引擎的访问(下例中的BadBot)
    User-agent: BadBot
    Disallow: /

    只允许某个搜索引擎的访问(下例中的WebCrawler)
    User-agent: WebCrawler
    Disallow:


    3、常见搜索引擎机器人Robots名字

    名称搜索引擎         URL

    Baiduspider             http://www.baidu.com

    Scooter                   http://www.altavista.com

    ia_archiver              http://www.alexa.com

    Googlebot               http://www.google.com

    Inktomi Slurp          http://www.yahoo.com

    FAST-WebCrawler  http://www.alltheweb.com

    Slurp                       http://www.inktomi.com

    MSNbot                   http://search.msn.com


    4、robots.txt举例

    下面是一些著名站点的robots.txt:

    http://www.google.com/robots.txt

    http://www.ibm.com/robots.txt

    http://www.sun.com/robots.txt

    http://www.eachnet.com/robots.txt

    看看百度的robots.txt:http://www.baidu.com/robots.txt

    黑色梦中SEO博客的robots.txt文件:http://www.bloghuman.com/robots.txt


    5、常见robots.txt错误

    ·颠倒了顺序:
    错误写成
    User-agent: *
    Disallow: GoogleBot

    正确的应该是:
    User-agent:GoogleBot
    Disallow: /

    ·把多个禁止命令放在一行中:
    例如,错误地写成
    Disallow:/css//cgi-bin//images/

    正确的应该是
    Disallow:/css/
    Disallow:/cgi-bin/
    Disallow:/images/

    ·行前有大量空格
    例如写成
      Disallow:/cgi-bin/
    尽管在标准没有谈到这个,但是这种方式很容易出问题。

    ·404重定向到另外一个页面:
    当Robot访问很多没有设置robots.txt文件的站点时,会被自动404重定向到另外一个Html页面。这时Robot常常会以处理robots.txt文件的方式处理这个Html页面文件。虽然一般这样没有什么问题,但是最好能放一个空白的robots.txt文件在站点根目录下

    ·采用大写
    USER-AGENT:EXCITE
    DISALLOW:
    虽然标准是没有大小写的,但是目录和文件名应该小写,:
    User-agent:GoogleBot
    Disallow:

    ·语法中只有Disallow,没有Allow!
    错误的写法是:
    User-agent: Baiduspider
    Disallow: /john/
    Allow: /jane/

    ·忘记了斜杠/
    错误的写做:
    User-agent: Baiduspider
    Disallow: css

    正确的应该是
    User-agent: Baiduspider
    Disallow: /css/

    下面一个小工具专门检查robots.txt文件的有效性:

    http://www.searchengineworld.com/cgi-bin/robotcheck.cgi


    二、Robots Meta标签

    1、什么是Robots Meta标签

    Robots.txt文件主要是限制整个站点或者目录的搜索引擎访问情况,而Robots Meta标签则主要是针对一个个具体的页面。和其他的META标签(如使用的语言、页面的描述、关键词等)一样,Robots Meta标签也是放在页面的中,专门用来告诉搜索引擎ROBOTS如何抓取该页的内容。


    2、Robots Meta标签的写法:

    Robots Meta标签中没有大小写之分,name=”Robots”表示所有的搜索引擎,可以针对某个具体搜索引擎写为name=”BaiduSpider”。content部分有四个指令选项:index、noindex、follow、nofollow,指令间以“,”分隔。

    index指令告诉搜索机器人抓取该页面;

    follow指令表示搜索机器人可以沿着该页面上的链接继续抓取下去;

    Robots Meta标签的缺省值是index和follow,只有inktomi除外,对于它,缺省值是index、nofollow。


    需要注意的是:上述的robots.txt和Robots Meta标签限制搜索引擎机器人(ROBOTS)抓取站点内容的办法只是一种规则,需要搜索引擎机器人的配合才行,并不是每个ROBOTS都遵守的。


    目前看来,绝大多数的搜索引擎机器人都遵守robots.txt的规则,而对于RobotsMETA标签,目前支持的并不多,但是正在逐渐增加,如著名搜索引擎GOOGLE就完全支持,而且GOOGLE还增加了一个指令“archive”,可以限制GOOGLE是否保留网页快照。例如:

    表示抓取该站点中页面并沿着页面中链接抓取,但是不在GOOLGE上保留该页面的网页快照。

    例子:
    #robots,scram


    User-agent:*
    Disallow:/cgi-bin
    Disallow:/TRANSCRIPTS
    Disallow:/development
    Disallow:/third
    Disallow:/beta
    Disallow:/java
    Disallow:/shockwave
    Disallow:/JOBS
    Disallow:/pr
    Disallow:/Interactive
    Disallow:/alt_index.html
    Disallow:/webmaster_logs
    Disallow:/newscenter
    Disallow:/virtual
    Disallow:/DIGEST
    Disallow:/QUICKNEWS
    Disallow:/SEARCH




    User-agent:Mozilla/3.01(hotwired-test/0.1)
    Disallow:/cgi-bin
    Disallow:/TRANSCRIPTS
    Disallow:/development
    Disallow:/third
    Disallow:/beta
    Disallow:/java
    Disallow:/shockwave
    Disallow:/JOBS
    Disallow:/pr
    Disallow:/Interactive
    Disallow:/alt_index.html
    Disallow:/webmaster_logs
    Disallow:/newscenter
    Disallow:/virtual
    Disallow:/DIGEST
    Disallow:/QUICKNEWS
    Disallow:/SEARCH




    User-agent:Slurp
    Disallow:/cgi-bin
    Disallow:/TRANSCRIPTS
    Disallow:/development
    Disallow:/third
    Disallow:/beta
    Disallow:/java
    Disallow:/shockwave
    Disallow:/JOBS
    Disallow:/pr
    Disallow:/Interactive
    Disallow:/alt_index.html
    Disallow:/webmaster_logs
    Disallow:/newscenter
    Disallow:/virtual
    Disallow:/DIGEST
    Disallow:/QUICKNEWS
    Disallow:/SEARCH
    User-agent:Scooter
    Disallow:/cgi-bin
    Disallow:/TRANSCRIPTS
    Disallow:/development
    Disallow:/third
    Disallow:/beta
    Disallow:/java
    Disallow:/shockwave
    Disallow:/JOBS
    Disallow:/pr
    Disallow:/Interactive
    Disallow:/alt_index.html
    Disallow:/webmaster_logs
    Disallow:/newscenter
    Disallow:/virtual
    Disallow:/DIGEST
    Disallow:/QUICKNEWS
    Disallow:/SEARCH




    User-agent:Ultraseek
    Disallow:/cgi-bin
    #Disallow:/TRANSCRIPTS
    Disallow:/development
    Disallow:/third
    Disallow:/beta
    Disallow:/java
    Disallow:/shockwave
    Disallow:/JOBS
    Disallow:/pr
    Disallow:/Interactive
    Disallow:/alt_index.html
    Disallow:/webmaster_logs
    Disallow:/newscenter
    Disallow:/virtual
    Disallow:/DIGEST
    Disallow:/QUICKNEWS
    Disallow:/SEARCH





    User-agent:smallbear
    Disallow:/cgi-bin
    Disallow:/java
    Disallow:/images
    Disallow:/development
    Disallow:/third
    Disallow:/beta
    Disallow:/webmaster_logs
    Disallow:/virtual
    Disallow:/shockwave
    Disallow:/TRANSCRIPTS
    Disallow:/newscenter
    Disallow:/virtual
    Disallow:/DIGEST
    Disallow:/QUICKNEWS
    Disallow:/SEARCH
    Disallow:/alt_index.html
    User-agent:GoogleBot
    Disallow:/cgi-bin
    Disallow:/java
    Disallow:/images
    Disallow:/development
    Disallow:/third
    Disallow:/beta
    Disallow:/webmaster_logs
    Disallow:/virtual
    Disallow:/shockwave
    Disallow:/TRANSCRIPTS
    Disallow:/newscenter
    Disallow:/virtual
    Disallow:/DIGEST
    Disallow:/QUICKNEWS
    Disallow:/SEARCH
    Disallow:/alt_index.html
  • 相关阅读:
    Nginx负载均衡+代理+ssl+压力测试
    Nginx配置文件详解
    HDU ACM 1690 Bus System (SPFA)
    HDU ACM 1224 Free DIY Tour (SPFA)
    HDU ACM 1869 六度分离(Floyd)
    HDU ACM 2066 一个人的旅行
    HDU ACM 3790 最短路径问题
    HDU ACM 1879 继续畅通工程
    HDU ACM 1856 More is better(并查集)
    HDU ACM 1325 / POJ 1308 Is It A Tree?
  • 原文地址:https://www.cnblogs.com/study121007/p/4612263.html
Copyright © 2011-2022 走看看