Skip to content
supperxin edited this page Sep 19, 2017 · 2 revisions

使用 robots.txt 文件限定抓取范围

robots.txt是一个纯文本文件,是搜索引擎蜘蛛爬行网站的时候要访问的第一个文件,当蜘蛛访问一个站点时,它会首先检查该站点根目录下是否存在robots.txt,如果存在,搜索机器人就会按照该文件中的内容来确定访问的范围,相当于网站与搜索引蜘蛛遵循协议,如果该文件不存在,所有的搜索蜘蛛将能够访问网站上所有没有被屏蔽的网页。

如果将网站视为酒店里的一个房间,robots.txt就是主人在房间门口悬挂的“请勿打扰”或“欢迎打扫”的提示牌。这个文件告诉来访的搜索引擎哪些房间可以进入和参观,哪些房间因为存放贵重物品,或可能涉及住户及访客的隐私而不对搜索引擎开放。但robots.txt不是命令,也不是防火墙,如同守门人无法阻止窃贼等恶意闯入者。

robots.txt 的语法:

User-agent

为特定搜索引擎定义搜索范围,一般情况下都不用特别定义,设定为这样就可以了:User-agent: *,表示定义所有的搜索引擎。

Disallow

禁止爬取,比如

  • 禁止爬取admin文件夹:Disallow: /admin/
  • 禁止爬取admin文件夹下的login.html:Disallow: /admin/login.html

Allow

允许抓取,一般和Disallow共用,来限定仅抓取文件下下的特定内容。比如禁止admin文件夹下的所有文件,除了.html的网页:

  Allow: /admin/.html$
  Disallow: /admin/

$ 结束符

  • 屏蔽所有的以.php结尾的文件:Disallow: .php$

* 通配符符号

  • 屏蔽所有带“?”的地址:Disallow: ?

Sitemap: 网站地图

使用 sitemap.xml 引导爬虫索引网站

可以配置的属性如下:

  • changefreq:页面内容更新频率。比如"always", "hourly", "daily", "weekly", "monthly", "yearly"
  • lastmod:页面最后修改时间,比如2005-06-03T04:20:32-08:00
  • loc:页面永久链接地址
  • priority:相对于其他页面的优先权,0.0 - 1.0之间
  • url:相对于前4个标签的父标签
  • urlset:相对于前5个标签的父标签
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    <url>
        <loc>http://www.cnblogs.com/cate/bpm/</loc>
        <lastmod>2017-09-19T15:20:50+00:00</lastmod>
        <changefreq>hourly</changefreq>
        <priority>0.8</priority>
    </url>
    <url>
        <loc>http://www.cnblogs.com/cate/life/</loc>
        <lastmod>2017-09-19T15:20:50+00:00</lastmod>
        <changefreq>hourly</changefreq>
        <priority>0.8</priority>
    </url>

参考资源

Clone this wiki locally