热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

宽度优先爬虫和带偏好的爬虫

互联网可以看成一个超级大的“图”,而每个页面可以看成一个“节点”。页面中的链接可以看成是图的“有向边”。因此,能够通过图的遍历得方式对互联网这个超级大“图”进行访问。

            互联网可以看成一个超级大的“图”,而每个页面可以看成一个“节点”。页面中的链接可以看成是图的“有向边”。因此,能够通过图的遍历得方式对互联网这个超级大“图”进行访问。

            图的遍历可以分为宽度优先遍历和深度优先遍历,但是深度优先遍历可能会在深度上过“深”或者陷入黑洞,大多数爬虫都不采用这种方式。另一方面,在爬取网页的时候,有时候不能完全按照宽度优先遍历的方式,而是给待遍历的网页赋予一定的优先级,根据这个优先级进行遍历,这种方法称为带偏好的遍历。

             整个的宽度优先爬虫过程就是从一系列的种子节点开始,把这些网页中的“子节点”也就是超链接提取出来,放入队列中依次进行抓取。被处理过的链接需要放入一张表中,通常称为visited表。每次新处理一个链接之前,需要查看这个连接是否已经存在于Visited表中。如果存在,证明链接已经处理过,跳过,不作处理,否则进行下一步处理。

           宽度优先遍历是爬虫中使用最广泛的一种爬虫策略,之所以使用宽度优先搜索策略,主要原因有三点:

           1,重要的网页往往离种子比较近。

            2,万维网的实际深度最多能达到17层,但是到大某个网页总存在一条很短的路径,而宽度优先遍历会以最快的速度达到这个网页。

            3,宽度优先有利于多爬虫的合作抓取,多爬虫合作通常先抓取站内链接,抓取的封闭性很强。

带偏好的爬虫:

       有时,在URL队列中选择需要抓取的URL时,不一定按照队列“先进先出”的方式进行选择,而把重要的URL先从队列中挑出来进行抓取,这种策略也称作“页面选择”,这可以使有限的网络资源照顾重要性高的网页。

      判断网页重要性的因素有很多,主要有链接的欢迎度,链接的重要性和平均链接深度,网站质量,历史权重等主要因素。

      如何实现最佳优先爬虫呢,最简单的方式可以使用优先级队列来实现TODO表,并且把每个URL的重要性作为队列元素的优先级。这样每次选出来的扩展的URL就是具有最高重要性的网页。

网络爬虫最关键的数据结构是URL队列,通常我们称之为爬虫队列。之前讲过一直使用内存数据结构,例如链表或者队列来实现URL队列,但是,网络上需要我们抓取的链接成千上万,在一些大型的搜索引擎中,比如百度,和Google,大概都有十几亿的URL需要抓取。因此,内存数据结构并不适合这些应用。最合适的一种方法是使用内存数据库,或者直接使用数据库来存储这些URL。本部分讲解爬虫队列的基本知识,并且介绍一种非常流行的内存数据库

Berkeley DB,最后介绍一个成熟的开源爬虫软件Heritrix是如何实现爬虫队列的。  




推荐阅读
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 短暂的人生中,IT和技术只是其中的一部分。无论换工作还是换行业,最终的目标是成功、荣誉和收获。本文探讨了技术人员如何跳出纯技术的局限,实现更大的职业发展。 ... [详细]
  • 专业人士如何做自媒体 ... [详细]
  • 本文详细介绍了Java代码分层的基本概念和常见分层模式,特别是MVC模式。同时探讨了不同项目需求下的分层策略,帮助读者更好地理解和应用Java分层思想。 ... [详细]
  • 用阿里云的免费 SSL 证书让网站从 HTTP 换成 HTTPS
    HTTP协议是不加密传输数据的,也就是用户跟你的网站之间传递数据有可能在途中被截获,破解传递的真实内容,所以使用不加密的HTTP的网站是不 ... [详细]
  • 探讨Redis的最佳应用场景
    本文将深入探讨Redis在不同场景下的最佳应用,包括其优势和适用范围。 ... [详细]
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • 搜索引擎技术概论(上篇):核心原理与应用分析
    搜索引擎技术概论(上篇)探讨了搜索的基本概念及其核心原理。搜索的本质在于信息检索,即用户通过输入关键词,利用特定的算法从海量数据中快速定位并提供所需信息。本文详细分析了搜索引擎的工作机制及其在实际应用中的表现。 ... [详细]
  • PHP 各版本对比:标准版与最新顶级版的详细分析 ... [详细]
  • B站服务器故障影响豆瓣评分?别担心,阿里巴巴架构师分享预防策略与技术方案
    13日晚上,在视频观看高峰时段,B站出现了服务器故障,引发网友在各大平台上的广泛吐槽。这一事件导致了连锁反应,大量用户纷纷涌入A站、豆瓣和晋江等平台,给这些网站带来了突如其来的流量压力。为了防止类似问题的发生,阿里巴巴架构师分享了一系列预防策略和技术方案,包括负载均衡、弹性伸缩和容灾备份等措施,以确保系统的稳定性和可靠性。 ... [详细]
  • 题目解析给定 n 个人和 n 种书籍,每个人都有一个包含自己喜好的书籍列表。目标是计算出满足以下条件的分配方案数量:1. 每个人都必须获得他们喜欢的书籍;2. 每本书只能分配给一个人。通过使用深度优先搜索算法,可以系统地探索所有可能的分配组合,确保每个分配方案都符合上述条件。该方法能够有效地处理这类组合优化问题,找到所有可行的解。 ... [详细]
author-avatar
cuijunhao456_715
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有