网络爬虫概述与原理

网络爬虫概述与原理

  • 网络爬虫简介
    • 狭义上理解
    • 功能上理解
    • 常见用途
    • 总结
  • 网络爬虫分类
    • 通用网络爬虫
    • 聚焦网络爬虫
    • 增量网络爬虫
    • 深度网络爬虫
  • 网络爬虫流程
  • 网络爬虫采集策略
    • 深度有限搜索策略
    • 广度优先搜索策略

网络爬虫简介

通过有效地获取网络资源的方式,便是网络爬虫。网络爬虫(Web Crawler)又被称为网络蜘蛛(Web Spider)或Web信息采集器,是一种按照指定规则、自动抓取或下载网络资源的计算机程序或自动化脚本。

狭义上理解

利用标准网络协议(HTTP、HTTPS),根据网络超链接和信息检索方法(深度优先)遍历网络数据的软件程序。

功能上理解

确定待采集的URL队列,获取每个URL对应的网页内容(如HTML和JSON),根据用户要求解析网页中的字段(如标题),并存储解析得到的数据。

常见用途

大数据环境下舆情分析与监测
政府或企业基于网络爬虫技术,采集论坛评论、在线博客、新闻媒体和微博等网站中的海量数据,采用数据挖掘相关方法(如实体识别、词频统计、文本情感计算、主题识别与演化等),发掘舆情热点、跟踪目标话题,并根据一定的标准采取相应的舆情控制与引导措施。

大数据环境下的用户分析
企业利用网络爬虫技术,采集用户基本信息、用户对企业或商品的看法、观点以及态度等数据、用户之间的互动信息等。基于这些信息,企业可以对用户进行画像,如用户基本属性画像、用户产品特征画像、用户互动那个特征画像等,发掘用户对产品的个性化偏好与需求。同时,也可以分析企业自身产品的优势与顾客反馈情况等。

科研需求

针对网络大数据驱动、多源异构数据驱动的科学研究,必然涉及网络数据采集技术。例如,针对网络中的多源异构数据(如数字、文本、图片和视频等),如何更好地管理与存储所采集的数据、如何进行数据的过滤与融合、如何对数据的可用性进行评估、如何将数据应用到商业分析中等。

总结

网络爬虫技术在搜索引擎中扮演着信息采集器的角色,是搜索引擎模块中的最基础的部分。搜索引擎Google、百度、必应(Bing)都采用网页爬虫技术采集海量的互联网数据。大致结构如下:
在这里插入图片描述

  1. 利用网络爬虫技术自动化地采集互联网中的网页信息
  2. 存储采集的信息,在存储过程中,往往需要检测重复内容,从而避免大量重复信息的采集;同时,玩也之间的链接关系也需要存储;原因是链接关系可用来计算网页内容的重要性。
  3. 数据预处理操作,即提取文字、分词、消除噪音以及链接关系计算等。
  4. 对预处理的数据建立索引库,方便用户快速查找,常用的索引方法有后缀数组、签名文件和倒排文件。
  5. 基于用户检索的内容(如用户输入的关键词),搜索引擎从网页索引库中查找符合该关键词的所有网页(结果集),通过对结果集的排序,将最相关的网页返回给用户

网络爬虫分类

网络爬虫按照系统结构和实现技术,可分为4类,即通用网络爬虫、聚焦网络爬虫、增量网络爬虫和深度网络爬虫

通用网络爬虫

又称为全网网络爬虫,其在采集数据时,由部分种子URL扩展到整个网络的全部页面,主要应用于搜索引擎数据的采集。这类网络爬虫的数据采集范围较广,数据采集量巨大,对数据采集的速度和存储空间有较高的要求,通常需要深度遍历网站的资源。例如,Apache的子项目Nutch就是一个高效的通用网络爬虫框架,其使用分布式的方式采集数据。

聚焦网络爬虫

又称为主题网络爬虫,是指选择性地采集那些与预先定义好的主题相关的页面。相比于通用网络爬虫,聚焦网络爬虫采集的网页资源少,主要用于满足特定人群对特定领域信息的需求。在聚焦网络爬虫中,需要设计过滤策略,即过滤与所定主题无关的页面。

增量网络爬虫

指对已下载网页采取增量式更新,只采集新产生的或者已发生变化网页的爬虫。增量网络爬虫能够在一定程度上避免了重复采集数据,历史已经采集过的页面不重复采集。增量网络爬虫避免了重复采集数据,可以减少时间和空间上的耗费。针对小规模特定网站的数据采集,在设计网络爬虫时,可构建一个基于时间戳判断是否更新的数据库,通过判断时间戳的先后,判断程序是否继续采集,同时更新数据库中的时间戳信息。

深度网络爬虫

Deep Web爬虫,指对大部分内容不能通过静态链接获取,只有用户提交表单信息才能获取Web页面的爬虫。

网络爬虫流程

在这里插入图片描述

  1. 选取部分种子URL(初始URL),将其放入待采集的队列中。如在java中,可以放入List、LinkedList及Queue中
  2. 判断URL队列是否为空,如果为空则结束程序的执行,否则执行下一步
  3. 从待采集的URL队列中取出一个URL,获取URL对应的网页内容。在此步骤中需要使用HTTP响应状态码(200和403)判断是否成功获得了数据,如响应成功则执行解析操作;如响应不成功,则将其重新放入待采集URL队列(这里需要过滤掉无效URL)
  4. 响应成功后获取的数据,执行源码解析操作。此步骤根据用户需求获取网页内容中的部分字段,如论坛帖子的id、标题和发表时间等
  5. 对解析后的数据进行数据存储操作

网络爬虫采集策略

深度有限搜索策略

Depth-First Search,从根节点开始,根据优先级向下遍历该根节点对应的子节点。当访问到某一子节点时,以该子节点为入口,继续向下层遍历,直到没有新的子节点可以继续访问为止。接着使用回溯法,找到没有被访问的节点,以类似的方式进行搜索。
在这里插入图片描述

广度优先搜索策略

又称为宽度优先搜索策略,从根节点开始,沿着网络的宽度遍历每一层的节点,如果所有节点均被访问,则终止程序。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1419669.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

ESXI虚拟机为centos7.9扩容

一.df -T 查看文件系统类型 当前系统格式为 xfs 二 .lsblk查看分区状况 三.虚拟机管理增加容量 原来是22G,改为30G,之后重启 四.fdisk -l 查看磁盘容量和分区 32.2G是目前的总容量 五.fdisk /dev/sda 新增分区 [rootlocalhost ~]# fdisk /dev/sda …

机器学习入门到放弃2:朴素贝叶斯

1. 算法介绍 1.1 算法定义 朴素贝叶斯分类(NBC)是以贝叶斯定理为基础并且假设特征条件之间相互独立的方法,先通过已给定的训练集,以特征词之间独立作为前提假设,学习从输入到输出的联合概率分布,再基于学习…

PC端与bluetooth蓝牙虚拟串口通信

应该采用RFCOMM虚拟串口方式来进行通信,原理跟socket通信类似,不同的是使用的通信协议不同,本人结合相关的API,做了以下最简单的封装。 1、获取本地蓝牙设备与附近蓝牙设备信息 2、通信类 /* 通信类:只是对于客户端通…

【Linux】-网络请求和下载、端口[6]

目录 一、网络请求和下载 1、ping命令 2、wget命令 3、curl命令 二、端口 1、虚拟端口 2、查看端口占用 一、网络请求和下载 1、ping命令 可以通过ping命令,检查指定的网络服务器是否可联通状态 语法:ping [ -c num ] ip或主机名 选项&…

企业设置,支持自定义短信签名

05/08 主要更新模块概览 自动换行 启动封面 使用统计 短信签名 01表单管理 1.1 【表单外链】- 查询外链支持多个外链 说明: 表单查询外链原仅支持一个,现支持增加多个外链功能&…

修改表空间对应数据文件的大小

Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 表空间与数据文件紧密相连,相互依存,创建表空间的时候需设置数据文件大小。 在后期实际应用中,如果实际存储的数据量超出事先设置的数据…

vuex核心概念-getters

除了state之外,有时我们还需要从state中派生出一些状态,这些状态是依赖state的,此时会用到getters。

Keysight 是德 N1077B 光/电时钟恢复设备,收藏保存

Keysight N1077B是一款光/电时钟恢复设备,支持115 MBd至24 GBd的数据速率范围,适用于多模和单模光信号以及电信号。该设备能够处理PAM4和NRZ两种类型的数据信号,并提供符合标准的时钟恢复功能。 N1077B具备可调峰值和环路带宽(高…

【C++】学习笔记——模板进阶

文章目录 十一、模板进阶1. 非类型模板参数2. 按需实例化3. 模板的特化类模板的特化 4. 模板的分离编译 未完待续 十一、模板进阶 1. 非类型模板参数 模板参数分为类型形参和非类型形参 。类型形参即:出现在模板参数列表中,跟在class或者typename之类的…

基础I/O:文件系统调用接口

文章目录 文件系统调用接口open系统调用接口和C语言封装文件描述符fd重定向 文件系统调用接口 open NAME//打开、创建 - 打开并可能创建文件或设备open, creat - open and possibly create a file or deviceSYNOPSIS#include <sys/types.h>#include <sys/stat.h>…

Mask2former代码详解

1.整体流程 Mask2former流程如图所示&#xff0c;对于输入图片&#xff0c;首先经过Resnet等骨干网络获得多层级特征&#xff0c;对于获得的多层级特征&#xff0c;一个方向经过pixel decoder(基于DetrTransformerEncoderLayer)得到per-pixel embedding,另外一个方向经过transf…

使用 docker-compose 搭建个人博客 Halo

说明 我这里使用的是 Halo 作为博客的工具&#xff0c;毕竟是开源了&#xff0c;也是使用 Java 写的嘛&#xff0c;另外一点就是使用 docker 来安装&#xff08;自动挡&#xff0c;不用自己考虑太多的环境因素&#xff09;&#xff0c;这样子搭建起来更快一点&#xff0c;我们…

ICode国际青少年编程竞赛- Python-2级训练场-基础训练3

ICode国际青少年编程竞赛- Python-2级训练场-基础训练3 1、 d Item.x - Dev.x Dev.step(d)2、 d Spaceship.x - Item.x Spaceship.step(d)3、 d Item.y - Dev.y Dev.step(d)4、 for i in range(4):Spaceship.step(2)d Item[i].x - Dev.xDev.step(d)Dev.step(-d)5、…

c++ STL 之栈—— stack 详解

vector 是 stl 的一个关联容器,名叫“栈”&#xff0c;何为“栈”&#xff1f;其实就是一个数组&#xff0c;但有了数组何必还需栈&#xff0c;这是一个高深的问题。 一、简介 1. 定义 栈&#xff0c;是一个柔性数组&#xff08;可变长数组&#xff09;&#xff0c;可以变大变小…

什么是翘尾因素

在有关CPI 的分析文章和新闻稿件中&#xff0c;经常会出现“翘尾因素”或“翘尾影响” 等词汇&#xff0c;这是分析同比价格指数变动幅度时所特有的概念。那么什么是“翘尾因素” 或“翘尾影响”呢&#xff1f; 一、什么是翘尾因素 “翘尾因素”是指上年价格上涨&#xff08;…

大屏分辨率适配插件v-scale-screen

前言&#xff1a;大屏分辨率适配繁多&#xff0c;目前我认为最简单且问题最少的的方案就是使用v-scale-screen插件&#xff0c;无需考虑单位转换&#xff0c;position定位也正常使用。 1. 效果 填充满屏幕的效果 保持宽高比的效果 2. 插件原理 原理是通过css transfom 实现…

Android AOSP Ubuntu源码编译电脑卡顿问题定位解决

文章目录 问题概述分析问题解决问题查看交换分区创建交换分区删除交换分区调整交换分区的活跃度 问题概述 开发SystemUI时&#xff0c;使用内存为16G的主机&#xff0c;Ubuntu 20.04的系统编译SystemUI的源码&#xff0c;编译的过程中发现电脑卡顿&#xff0c;鼠标不能移动。必…

记录一次pods 导入 SocketRocket库的经历

折腾一上午&#xff0c;brew 安装成功了 cococapod 然后项目启动下载一个SocketRocket库 下载成功后总是报错&#xff1a; 睡了2个多小时&#xff0c;我在qq就交流群里求助&#xff1a; 终于把项目管理&#xff0c;在命令行里执行这句&#xff1a; open chat_app.xcworkspace…

视频剪辑达人分享:一键批量置入随机封面,创意无限

在数字化媒体飞速发展的今天&#xff0c;视频内容已经成为我们表达创意、分享故事、传递信息的主要方式之一。而在视频制作过程中&#xff0c;封面作为视频的“脸面”&#xff0c;往往决定了观众是否愿意点击观看。因此&#xff0c;为视频选择合适的封面变得至关重要。 在大量…

第十二届蓝桥杯省赛真题 Java 研究生 组【原卷】

文章目录 发现宝藏【考生须知】试题 A: 卡片试题 B: 相乘试题 C: 直线试题 D: 路径试题 E : \mathrm{E}: E: 回路计数试题 F: 时间显示试题 G: 最少砝码试题 H : \mathrm{H}: H: 杨辉三角形试题 I: 双向排序试题 J:分果果 发现宝藏 前些天发现了一个巨牛的人工智能学习网站&…