网络爬虫之Robots协议

↘锁芯ラ 提交于 2019-12-17 00:47:58

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

一.什么是Robots协议

    Robots协议的全称是“网络爬虫排除标准”(Robots Exclusion Protocol),网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。

    一句话概括就是,站点与搜索引擎爬虫之间的"君子协议"。

二.如何使用Robots协议

    一般有两种方法。

    (1)在网站的根目录下放置一个文件,起名为 robots.txt ,其中规定了哪些内容可以爬取和哪些内容不想被抓取:

    robots.txt 必须放在站点的根目录下,文件名必须小写。在 robots.txt 文件中,至少要有一条 Disallow 记录。如果 robots.txt 文件为空,则允许所有搜索引擎Robots都是开放的。

    robots.txt 文件中的记录通常以一行或多行 User-agent 开始,后面加上若干 Disallow 行,解释如下:

    a.User-agent:指定搜索引擎 robots 的名字,常见的有Baiduspider、Sogouspider、360Spider等。如果有多条 User-agent 记录,说明有多个robots会受到该协议的限制。至少要有一条 User-agent 记录。如果该值为 * ,则该协议对所有爬虫都有效。

    b.Disallow:设置不希望被访问到的URL,可以是完整的路径,也可以是相对路径。任何以 Disallow 开头的URL均不会被机器人访问到。比如:"Disallow:/product",则对 "/product01.html"和"/product/01.html"都不允许机器人访问。而"Disallow:/product/",则允许访问"/product01.html",但不能访问"/product/01.html"。

    (2)在网页的Meta元标签里面设置 Robots Meta 标签:

    第一种方法是粗粒度的方法,设置 Robots Meta 的值来限制爬虫访问则是一种细粒度的方法,把限制细化到了每个网页。

    Content部分有6个指令选项:all、index、noindex、follow、nofollow、none,指令组合使用时用","分隔。

        index:允许被搜索引擎索引进数据库;

        follow:允许通过此网页的链接继续索引其它网页;

        all:默认值,相当于"index,follow",允许被搜索引擎索引进数据库,允许通过此网页的链接继续索引其它网页;

        noindex:不被搜索引擎索引进数据库,但搜索引擎可以通过此网页的链接继续索引其它网页;

        nofollow:被搜索引擎索引进数据库,但搜索引擎不可以通过此网页的链接继续索引其它网页;

        none:不被搜索引擎索引进数据库,且搜索引擎不可以通过此网页的链接继续索引其它网页,相当于"noindex,nofollow"。

    Robots Meta标签放在页面的<head></head>中,告诉搜索引擎Robots如何抓取该页的内容。
    <meta name="robots" content="none">:防止所有搜索引擎访问。
    <meta name="Baiduspider" content="noindex,nofollow">:指定仅限制百度搜索引擎访问。

三.Robots使用示例

    (以淘宝网为例:https://www.taobao.com/)

    淘宝网的robots文件:https://www.taobao.com/robots.txt

User-agent:  Baiduspider
Allow:  /article
Allow:  /oshtml
Disallow:  /product/
Disallow:  /

User-Agent:  Sogouspider
Allow:  /article
Allow:  /oshtml
Allow:  /product
Disallow:  /

#...略去其他爬虫详情

User-Agent:  *
Disallow:  /

    如上所示:

    对于百度搜索引擎,不允许访问,限制效果图:

    对于搜狗搜索引擎,允许访问,效果图:

    可以看到,对比很明显,百度搜索引擎机器人被限制了。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!