热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

搜索引擎蜘蛛抓取网页规则

搜索引擎面对的是互联网万亿网页,如何高效抓取这么多网页到本地镜像?这便是网络爬虫的工作。我们也叫它网络蜘蛛,做为站长,我们每天都在与它亲密接触。一,爬虫框架上图是

  搜索引擎面对的是互联网万亿网页,如何高效抓取这么多网页到本地镜像?这便是网络爬虫的工作。我们也叫它网络蜘蛛,做为站长,我们每天都在与它亲密接触。

  一,爬虫框架

  

  上图是一个简单的网络爬虫框架图。种子URL入手,如图所示,经过一步步的工作,最后将网页入库保存。当然,勤劳的蜘蛛可能需要做更多的工作,比如:网页去重以及网页反作弊等。

  也许,我们可以将网页当作是蜘蛛的晚餐,晚餐包括:

  已下载的网页。已经被蜘蛛抓取到的网页内容,放在肚子里了。

  已过期网页。蜘蛛每次抓取的网页很多,有一些已经坏在肚子里了。

  待下载网页。看到了食物,蜘蛛就要去抓取它。

  可知网页。还没被下载和发现,但蜘蛛能够感觉到他们,早晚会去抓取它。

  不可知网页。互联网太大,很多页面蜘蛛无法发现,可能永远也找不到,这部份占比很高。

  通过以上划分,我们可以很清楚的理解搜索引擎蜘蛛的工作及面临的挑战。大多数蜘蛛是按照这样的框架去爬行。但也不完全一定,凡事总有特殊,根据职能的不同,蜘蛛系统存在一些差异。

  二,爬虫类型

  1,批量型蜘蛛。

  这类蜘蛛有明确的抓取范围和目标,当蜘蛛完成目标和任务后就停止抓取。具体目标是什么?可能是抓取网页数量,网页大小,抓取时间等。

  2,增量型蜘蛛

  这类蜘蛛和批量型蜘蛛不同,他们会持续不断的抓取,对于抓取到的网页会定期抓取更新。因为互联网中的网页是随时处于更新状态中,增量型蜘蛛需要能够反映出这种更新。

  3,垂直性蜘蛛

  这种蜘蛛只关注特定主题或者特定的行业网页。以健康网站为例子,这类专门的蜘蛛会只抓取健康相关主题,其它主题内容的网页则不抓取。考验这只蜘蛛的难点是如何去更精准的识别内容所属于行业。目前来看,很多垂直类行业网站是需要这种蜘蛛去抓取的。

  三,抓取策略

  蜘 蛛通过种子URL进行爬行拓展,列出大量待抓取URL。但是待抓取URL数量庞大,蜘蛛如何确定抓取顺序先后呢?蜘蛛抓取的策略有很多种,但最终目的是一 个:优先抓取重要的网页。评价页面是否重要,蜘蛛会根据页面内容原创程度,链接权重分析等众多方式来进行计算。比较有代表性的抓取策略如下:

  1,宽度优先策略

  

  宽度优先是指:蜘蛛在抓取一个网页后,继续将该网页所包含的其它页面按顺序进行进一步抓取。这种思想看似简单,其实却很实用。因为大多数网页都是按优先级进行排序,重要的页面会优先在页面上进行推荐。

  2,PageRank策略

  PageRank是一种非常著名的链接分析方法,主要是用来衡量网页权重。如谷歌的PR,就是典型的PageRank算法。通过PageRank算法我们可以找出哪些页面是更重要的,然后蜘蛛优先去抓取这些重要性的页面。

  3,大站优先策略

  这个很容易理解,大网站通常拥有更多的内容页面,并且质量也会更高。蜘蛛会先分析网站归类与属性。如果这个网站已经收录很多,或者在搜索引擎系统中权重很高,则优先考虑收录。

  四,网页更新

  互 联网中的页面大多会保持更新,这样就要求蜘蛛所存储的页面也能及时更新,保持一致性。打个比喻:一个网页之前排名很好,如果页面已经被删,却还有排名,那 体验就很不好。因此搜索引擎需要随时了解这些并更新页面,将最新的页面提供给用户。常用的网页更新策略在三种:历史参考策略,用户体验策略。聚类抽样策 略。

  1,历史参考策略

  这是建立在一种假设基础上的更新策略。比如,若你的网页之前按规律一直更新,那搜索引擎也认为你的页面将来也会经常更新,蜘蛛也会按这个规律定期来网站进行抓取网页。这也是为什么点水一直强调网站内容需要有规律更新的原因。

  2,用户体验策略

  一 般来说,用户只会查看搜索结果前三页的内容,后面的页面很少有人去看。用户体验策略就是搜索引擎根据用户的这个特点来进行更新。例如,一个网页可能发布时 间较早,一段时间没更新,但是用户依然觉得有用,点击浏览它,那么搜索引擎先不去更新这些过时的网页也是可以的。这就是为什么搜索结果中,并不一定最新的 页面排名一定靠前的原因。排名更多的是取决于这个页面的质量,而完全不是更新时间先后。

  3,聚类抽样策略

  上 两种更新策略主要是参考了网页的历史信息。但存储大量历史信息对搜索引擎来说是一种负担,另外如果收录的是新网页则是没有历史信息可以参考的,那怎么办? 聚类抽样策略是指:根据网页所展现出来的一些属性,来将很多相似网页进行归类,被归类的页面按照相同的规律去进行更新。

  


推荐阅读
  • 本文介绍了用户界面(User Interface, UI)的基本概念,以及在iOS应用程序中UIView及其子类的重要性和使用方式。文章详细探讨了UIView如何作为用户交互的核心组件,以及它与其他UI控件和业务逻辑的关系。 ... [详细]
  • Python网络编程:深入探讨TCP粘包问题及解决方案
    本文详细探讨了TCP协议下的粘包现象及其产生的原因,并提供了通过自定义报头解决粘包问题的具体实现方案。同时,对比了TCP与UDP协议在数据传输上的不同特性。 ... [详细]
  • 汇编语言标识符和表达式(四)(表达式与符号定义语句)
    7、表达式表达式是程序设计课程里的一个重要的基本概念,它可由运算符、操作符、括号、常量和一些符号连在一起的式子。在汇编语言中,表达式分为:数值表达式和地址表达式。(1)进制伪指令R ... [详细]
  • 对于非计算机专业背景的开发者而言,如何快速掌握.NET基础知识以应对技术面试是一个挑战。本文将提供一系列实用建议,帮助读者在短时间内提高.NET基础水平。 ... [详细]
  • 本文介绍了使用Python和C语言编写程序来计算一个给定数值的平方根的方法。通过迭代算法,我们能够精确地得到所需的结果。 ... [详细]
  • 本文提供了一个关于AC自动机(Aho-Corasick Algorithm)的详细解析与实现方法,特别针对P3796题目进行了深入探讨。文章不仅涵盖了AC自动机的基本概念,还重点讲解了如何通过构建失败指针(fail pointer)来提高字符串匹配效率。 ... [详细]
  • 本文提供了一个详尽的前端开发资源列表,涵盖了从基础入门到高级应用的各个方面,包括HTML5、CSS3、JavaScript框架及库、移动开发、API接口、工具与插件等。 ... [详细]
  • 本文介绍了在达梦数据库(DM7)中通过两种方法实现两表之间的联接更新操作,包括使用子查询的更新语句和MERGE语句的具体应用。 ... [详细]
  • SSE图像算法优化系列三:超高速导向滤波实现过程纪要(欢迎挑战)
    自从何凯明提出导向滤波后,因为其算法的简单性和有效性,该算法得到了广泛的应用,以至于新版的matlab都将其作为标准自带的函数之一了&#x ... [详细]
  • 解读基因集富集分析(GSEA)结果及应用
    本文详细介绍了基因集富集分析(Gene Set Enrichment Analysis, GSEA)的基本原理,以及如何通过GSEA分析结果来解析基因表达数据。此外,还提供了使用R语言进行GSEA分析的具体方法。 ... [详细]
  • 社会网络分析学习笔记 - 模块4
    本文探讨了小世界现象及其在社交网络中的应用,包括厄多斯数和培根数的概念。文章还介绍了图的基本表示方法,如边列表和邻接矩阵,并讨论了它们在不同规模网络中的适用性和效率。 ... [详细]
  • 解析Java虚拟机HotSpot中的GC算法实现
    本文探讨了Java虚拟机(JVM)中HotSpot实现的垃圾回收(GC)算法,重点介绍了根节点枚举、安全点及安全区域的概念和技术细节,以及这些机制如何影响GC的效率和准确性。 ... [详细]
  • 如何高效地将CAJ文档转换为Word格式
    在学术研究和日常工作中,我们有时需要将特定的CAJ格式文档转换为更通用的Word格式。本文将详细介绍如何轻松实现这一转换,帮助用户快速掌握操作步骤。 ... [详细]
  • 贡献转移在计算每个元素的作用的时候,我们可以通过反向枚举作用效果,添加到作用元素的身上,这种方法叫做贡献转移。更正式的说, ... [详细]
  • 本文回顾了作者在求职阿里和腾讯实习生过程中,从最初的迷茫到最后成功获得Offer的心路历程。文中不仅分享了个人的面试经历,还提供了宝贵的面试准备建议和技巧。 ... [详细]
author-avatar
周鑫先生_852
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有