Python3爬虫篇之robots.txt

借鉴源

robots.txt简介

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

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

    robots.txt也是一种SEO优化

robots.txt作用

    为何需要用robots.txt文件来告诉搜索机器人不要爬取我们的部分网页,比如:

  • 后台管理文件
  • 程序脚本
  • 附件
  • 数据库文件
  • 编码文件
  • 样式表文件
  • 模板文件
  • 导航图片
  • 背景图片

说到底了,这些页面或文件被搜索引擎收录了,用户也看不了,多数数据文件需要口令才能进入。既然这样,还让搜索机器人爬取的话,就浪费了服务器资源,增加了服务器的压力,因此我们可以编写robots.txt告诉机器人集中注意力去收录我们的文章页面,可以增强用户体验。

以下五个方法足以让你对搜索引擎蜘蛛掌控能力提升不少:
就像百度说的:我们和搜索引擎应该是朋友,增加一些沟通,才能消除一些隔膜。

  1. robots屏蔽网站重复页
      很多网站一个内容提供多种浏览版本,虽然很方便用户却对蜘蛛造成了困难,因为它分不清那个是主,那个是次,一旦让它认为你在恶意重复,你就惨了
      User-agent: *
      Disallow: /sitemap/ 《禁止蜘蛛抓取 文本网页》
  2. robots保护网站安全
      很多人纳闷了,robots怎么还和网站安全有关系了?其实关系还很大,不少低级黑客就是通过搜索默认后台登陆,以达到入侵网站的目标
      User-agent: *
      Disallow: /admin/ 《禁止蜘蛛抓取admin目录下所有文件》
  3. 防止盗链
      一般盗链也就几个人,可是一旦被搜索引擎“盗链”那家伙你100M宽带也吃不消,如果你做的不是图片网站,又不想被搜索引擎“盗链”你的网站图片
      User-agent: *
      Disallow: .jpg$
  4. 提交网站地图
      现在做优化的都知道做网站地图了,可是却没几个会提交的,绝大多数人是干脆在网页上加个链接,其实robots是支持这个功能的
      Sitemap: http:-www-***-com/sitemaps/sitemaps.xml
  5. 禁止某二级域名的抓取
      一些网站会对VIP会员提供一些特殊服务,却又不想这个服务被搜索引擎检索到
      User-agent: *
      Disallow: /

Robots的语法(三个语法和两个通配符)

三个语法

  1. User-agent:(定义搜索引擎)

    示例:

    User-agent: *(定义所有搜索引擎)
    User-agent: Googlebot (定义谷歌,只允许谷歌蜘蛛爬取)
    User-agent: Baiduspider (定义百度,只允许百度蜘蛛爬取)

    不同的搜索引擎的搜索机器人有不同的名称,
    谷歌: Googlebot
    百度: Baiduspider
    MSN: MSNbot
    Yahoo :Slurp

  2. Disallow:(用来定义禁止蜘蛛爬取的页面或目录)

    示例:

    Disallow: /(禁止蜘蛛爬取网站的所有目录 “/” 表示根目录下)
    Disallow: /admin (禁止蜘蛛爬取admin目录)
    Disallow: /abc.html (禁止蜘蛛爬去abc.html页面)
    Disallow: /help.html (禁止蜘蛛爬去help.html页面)

  3. Allow:(用来定义允许蜘蛛爬取的页面或子目录)

    示例:

    Allow: /admin/test/(允许蜘蛛爬取admin下的test目录)
    Allow: /admin/abc.html(允许蜘蛛爬去admin目录中的abc.html页面)

两个通配符

  1. 匹配符 “$”

    $ 通配符:匹配URL结尾的字符

  2. 通配符 “*”
    * 通配符:匹配0个或多个任意字符

robots.txt 综合示例

  1. 禁止搜索引擎抓取特定目录

    在这个例子中,该网站有三个目录对搜索引擎的访问做了限制,即搜索引擎不会访问这三个目录。

    User-agent: *   
    Disallow: /admin/
    Disallow: /tmp/
    Disallow: /abc/

  2. 禁止admin目录,但允许抓取admin目录下的seo子目录

    User-agent: *   
    Allow: /admin/seo/
    Disallow: /admin/

  3. 禁止抓取/abc/目录下的所有以".htm”为后缀的URL(包含子目录)

    User-agent: *   
    Disallow: /abc/*.htm$

  4. 禁止抓取网站中所有的动态页面

    User-agent: *   
    Disallow: /?

    屏蔽所有带“?”的文件,这样就屏蔽所有的动态路径。

  5. 禁止百度蜘蛛抓取网站所有的图片:

    User-agent: Baiduspider
    Disallow: /.jpg$
    Disallow: /.jpeg$
    Disallow: /.gif$
    Disallow: /.png$
    Disallow: /*.bmp$

  6. 要在阻止网站页面被抓取的同时仍然在这些页面上显示 AdSense 广告

    User-agent: *   
    Disallow: /folder1/

    User-agent: Mediapartners-Google
    Allow: /folder1/

请禁止除 Mediapartners-Google 以外的所有漫游器。 这样可使页面不出现在搜索结果中,同时又能让 Mediapartners-Google 漫游器分析页面,从而确定要展示的广告。 Mediapartners-Google 漫游器并不与其他 Google User-agent 共享网页。

注意事项

  1. robots.txt 文件必须放在网站的根目录,不可以放在子目录。

    以京东网站为例:比如通过 https://www.jd.com/robots.txt你就可以访问 www.jd.com的robots.txt文件了。

  2. robots.txt 文件名命名必须小写,记得在robot面加“s”。

  3. User-agent、Allow、Disallow的 “:” 后面有一个字符的空格。

  4. 路径后面加斜杠“/” 和不加斜杠的是有区别的

    Disallow: /help
    禁止蜘蛛访问 /help.html、/helpabc.html、/help/index.html

    Disallow: /help/ 
    禁止蜘蛛访问 /help/index.html。 但允许访问 /help.html、/helpabc.html

  5. Disallow与Allow行的顺序是有意义的:

    举例说明:

    允许蜘蛛访问 /admin/ 目录下的seo文件夹

    User-agent: *     
    Allow: /admin/seo/
    Disallow: /admin/

    如果Allow 和 Disallow 的顺序调换一下:

    User-agent: *     
    Disallow: /admin/
    Allow: /admin/seo/

    蜘蛛就无法访问到 /admin/ 目录下的 seo 文件夹,因为第一个 Disallow: /admin/ 已匹配成功。

关于meta标签

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

robots meta 标签中没有大小写之分,name="Robots" 表示所有的搜索引擎,

可以针对某个具体搜索引擎(如google)写为 name="Googlebot"

content部分有四个指令选项,指令间以 “,” 分隔:

  • index
  • noindex
  • follow
  • nofollow

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

noindex 指令:告诉搜索引擎不允许抓取这个页面

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

nofollow 指令:告诉搜索引擎不允许从此页找到链接、拒绝其继续访问。

robots meta 标签的缺省值是indexfollow

根据以上的命令,我们就有了一下的四种组合:

可以抓取本页,而且可以顺着本页继续索引别的链接

不许抓取本页,但是可以顺着本页抓取索引别的链接

可以抓取本页,但是不许顺着本页抓取索引别的链接

不许抓取本页,也不许顺着本页抓取索引别的链接。

关于 rel=“nofollow”

将"nofollow"放在超链接中,告诉搜索引擎不要抓取特定的链接。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值