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

2023-05-16

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

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

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

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

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

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

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

带偏好的爬虫:

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

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

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

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

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



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

宽度优先爬虫和带偏好的爬虫 的相关文章

  • SIFT学习笔记(结合matlab源码)

    源码下载地址 xff1a https download csdn net download u014509577 11011793 一 算法流程 1 生成高斯金字塔 xff0c 并由此生成差分高斯金字塔 xff08 DoG xff09 xf
  • 点到面的配准算法

    学习一下PCL中点到面的配准算法 笔记一下以免以后忘记 好记性不如烂笔头 嘻嘻 一 理论基础 1 估计表面法向量问题 xff1d 对点集的K最近邻点的协方差矩阵求特征值和特征向量 xff08 PCA xff09 问题 2 假设三维点集中的任
  • GICP学习笔记

    首先贴一下原始论文的下载地址 xff1a http www roboticsproceedings org rss05 p21 pdf 下面开始论文学习笔记 1 ICP算法 标准ICP算法的关键概念可归纳为两个步骤 xff1a 计算两次扫描
  • python求解中位数、均值、众数

    首先定义一个数据 xff0c 在这里我假定为 xff1a num 61 2 3 2 5 1 0 1 2 9 一 求中位数 中位数 xff08 又称中值 xff0c 英语 xff1a Median xff09 xff0c 统计学中的专有名词
  • 获取占用率大于70%的硬盘.java

    获取占用率大于70 的硬盘 xff0c 准备写入oracle过程 xff0c 在占比大于90 时 xff0c 向指定邮箱发送邮件 import java io File import java text DecimalFormat publ
  • 使用KNN方法进行MNIST数据集分类

    声明 xff1a 本文的代码部分可以戳这里下载 一 MNIST数据集 MNIST是深度学习的经典入门demo xff0c 他是由6万张训练图片和1万张测试图片构成的 xff0c 每张图片都是28 28大小 xff08 如下图 xff09 x
  • python遍历整个文件夹中的所有.txt文件并将绝对路径保存在指定的txt文档中

    在深度学习处理数据时经常会用到的一步操作 xff0c 路径名因人而异 xff0c 可以根据需求自行更改 import os get txt document rootdir 61 os path join 39 要读取的txt文件的绝对路径
  • PointNet的点云分割实验

    PointNet属于直接对点云数据进行语义分割的开山之作 xff0c 优点就不一一细说了 xff0c 直接上代码来说明跑代码的过程以及过程中遇到的问题 笔者不才 xff0c 欢迎斧正 xff01 实验的代码可以在这里下载 xff1a htt
  • 图表组件FusionCharts介绍及免费下载地址

    FusionCharts套件帮助你创建令人惊叹的 图表控件 xff0c 仪表 xff0c 并在瞬间映射在你的所有网站和企业应用 使用它 xff0c 你可以建立漂亮的仪表板 xff0c 报告 xff0c 分析 xff0c 监测 xff0c 调
  • Vscode编译调试C++程序

    一 简介 本文讲述在windows平台下在Vscode中使用g 43 43 编译本地C 43 43 程序 xff0c 并使用gdb调试的方法 可能有些朋友会说 xff1a windows上不是已经有visual studio这个最强IDE了
  • vmware下vmdk文件越来越大的解决方法探讨

    前段时间在vmware下面安装了ubuntu镜像 xff0c 用了一段时间后发现ubuntu的vmdk文件越来越大 xff0c 达到了31 6GB xff0c 如下图所示 而且随着继续安装新的软件仍然在增大中 即使在ubuntu里面删除了文
  • IAR烧写MSP430失败的解决方法

    1 失败状况如下 在驱动安装没错 xff0c xff08 板子插进去usb自动安装完成 xff09 config选的MCU也没错的情况下出现如图错误 xff1a The debugging session could not be star
  • 数据分析、数据可视化中的常用图形

    整理了一些常用的数据可视化图形 xff0c 一些图形重点已列出 xff0c 若想深入了解可自行百度 目录 简单数据可视化矢量图 数据分析 其他可视化图表 xff1a 逻辑分析 层次分析导图 简单数据可视化矢量图 条柱图 xff1a 标准条
  • 专线的种类介绍

    常见的三种专线类型 裸纤 也叫裸光纤 xff0c 运营商会提供光纤 xff0c 中间不经过别的设备 xff0c 光纤价格昂贵 1 裸纤按照距离收费 xff0c 距离越远越贵 xff08 一般不跨省 市 xff0c 太贵 xff09 2 光纤
  • Unity3D场景切换

    首先新建两个场景 xff1a Scene 1与Scene 2 在第一个场景Scene 1中加入UI控件Button Text设置为 点击切换场景 xff0c 名称为默认值 Button 新建一个脚本 xff0c 命名为ChangeScene
  • oracle10g后面的聚合运算函数:cube、rollup等

    oracle10g后面的聚合运算函数 xff1a cube rollup及聚合运算sql 看到很多次阅读 xff0c 所以还是过来再写点东西 cube和rollup xff0c 只能配合group by使用的 xff0c 之所以之前没怎么看
  • Ubuntu 14.04利用tasksel安装配置lamp环境

    用 tasksel 可以方便安装dns server lamp kubuntu desktop ubuntu desktop xubuntu之类的软件包 这个软件在server版是预装的 xff0c 而在桌面版里是不预装的 xff0c 想用
  • 设置USB无线网卡为监听模式大学霸IT达人 

    设置USB无线网卡为监听模式大学霸IT达人 当用户实施无线网络渗透时 xff0c 设置无线网卡为监听模式是必不可少的操作 大学霸IT达人信息安全技术大讲堂通常情况下 xff0c 用户会遇到各种问题 xff0c 如网卡不支持 xff0c 网络
  • 判断无线网卡是否支持5GHz频段

    判断无线网卡是否支持5GHz频段 目前 xff0c 无线WiFi网络支持2 4GHz和5GHz两个频段 大学霸IT达人其中 xff0c 5GHz传输速率更高 xff0c 逐步会成为主流 如果要使用或渗透5GHz网络 xff0c 则无线网卡也
  • 嵌入式开发之Vscode实用插件大全

    嵌入式开发之Vscode实用插件大全 Chinese Simplified 简体中文 xff08 神器 xff09 C C 43 43 amp CMake amp C C 43 43 Extension Pack xff08 神器 xff0

随机推荐

  • django将网络中的图片,保存成model中的ImageField

    有这样的情形 xff0c django个人头像在model中是 xff1a class UserProfile AbstractUser 34 34 34 用户 34 34 34 name 61 models CharField max l
  • 【AI视野·今日Robot 机器人论文速览 第九期】Thu, 17 Jun 2021

    AI视野 今日CS Robotics 机器人学论文速览 Thu 17 Jun 2021 Totally 15 papers x1f449 上期速览 更多精彩请移步主页 Daily Robotics Papers Autonomous Nav
  • SpringBoot 集成cas5.3 实现sso单点登录

    博主说明 这篇文章速成cas xff0c 下面包含了cas统一认证登录 xff0c 统一认证登出 有兴趣想了解更多cas内容的可以看看我下面这些文章 springboot 使用cas5 3 sso概念springboot 集成cas5 3
  • UltraVNC 使用,内网局域网远程控制

    介绍 UltraVNC 是客户端 服务器软件 xff0c 允许你经由 TCP IP 连线 xff08 也就是主机都在同一网络环境下 xff09 xff0c 控制远端的电脑 这个版本的开发以 RealVNC 为基础 xff0c 加上了Tigh
  • JS判断一个字符串是否在数组中

    方法1 xff1a arr indexOf 某元素 xff1a 未找到则返回 1 span class token keyword var span number span class token operator 61 span span
  • pb9 数据窗口的计算列

    数据窗口中 xff0c 可以增加计算列 xff0c 进行合计 平均或者其他计算动作 在窗口的按钮 xff0c 或者其他事件中 xff0c 可以对数据窗口的计算列的表达式进行修改 xff0c 这样可以将数据窗口多用 办法 xff1a dw 1
  • tar打包命令(linux)

    1 打包命令 span class token function tar span cvf 归档路径 被打包文件路径 span class token punctuation span c create archive v verbose
  • Python字符串与数组相互转换

    Python中有join 和os path join 两个函数 xff0c 具体作用如下 xff1a join xff1a 连接字符串数组 将字符串 元组 列表中的元素以指定的字符 分隔符 连接生成一个新的字符串os path join x
  • FastApi 文件上传upload

    需要使用的Python包 xff1a fastapi和uvicorn span class token keyword import span time span class token keyword import span uvicor
  • zip/tar 分割压缩和合并解压

    1 zip 分割压缩和合并解压 span class token comment 准备工作 xff1a 将文件或文件夹打包为zip压缩包 span span class token function zip span r src zip s
  • python 创建excel 并保存(两种方法)

    1 概要 python中的包xlwt和xlsxwriter都是比较方便创建excel文件并写入数据的 2 xlwt 创建excel并保存 xlwt中 xff1a 通过xlwt Workbook 来新建工作簿 xff1b 通过 add she
  • Python 保留两位小数几种方法

    一 xff1a 保留两位小数 且 做四舍五入处理 四舍六入五成双 xff0c 四舍六入五凑偶的意思 xff0c 根据百度词条的解释如下 xff08 1 xff09 当精确位后面一位的数字是1 4的时候 xff0c 舍去 xff08 2 xf
  • XSS 攻击常用代码

    1 XSS 攻击常用代码 span class token number 1 span 39 34 span class token punctuation span span class token punctuation span sp
  • xpath 爬虫案例

    1 案例 爬取糗百中的段子内容和作者名称 span class token keyword from span lxml span class token keyword import span etree url span class t
  • Selenium 鼠标滚动操作

    1 JS处理滚动条问题 span class token number 1 span 滚动条回到顶部 xff1a js span class token operator 61 span span class token string 34
  • selenium 定位元素(并集)

    并集 xff1a answer 61 driver find element By CLASS NAME info content and huida con text 1 id 说明 xff1a 通过元素的id属性来定位元素 xff0c
  • 精细粒度访问控制:DBMS_RLS包实现数据库表行级安全控制

    精细粒度访问控制 xff1a DBMS RLS包实现数据库表行级安全控制 这是行级控制 xff0c 并且用的数据库提供的dbms包做的 xff0c 而不是视图或者触发器 xff0c 据说 xff0c 可以对所有的DML起作用 精细粒度访问控
  • java获取json数组格式中的值

    第一种方法 xff1a String str span class token operator 61 span span class token string 34 39 array 39 39 id 39 5 39 name 39 39
  • 程序员面试经历

    现在找工作 已经没有了毕业以后那时候找工作的那种紧张心情 自从在上家公司离职以后 自己进行了一段时间的工作 世界上本来没有面霸 面试的多了 也就成了面霸 不得不承认 一开始自己面试是有些紧张 但是 面试的多了 也就不觉得紧张 反而有些平淡了
  • 宽度优先爬虫和带偏好的爬虫

    互联网可以看成一个超级大的 图 xff0c 而每个页面可以看成一个 节点 页面中的链接可以看成是图的 有向边 因此 xff0c 能够通过图的遍历得方式对互联网这个超级大 图 进行访问 图的遍历可以分为宽度优先遍历和深度优先遍历 xff0c