网络爬虫调研报告

2024-08-28 04:36
文章标签 网络 爬虫 报告 调研

本文主要是介绍网络爬虫调研报告,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

基本原理

Spider概述 

Spider即网络爬虫 ,其定义有广义和狭义之分。狭义上指遵循标准的 http协议利用超链接和 Web文档检索的方法遍历万维网信息空间的软件程序 ;而广义的定义则是所有能遵循 http协议检索 Web文档的软件都称之为网络爬虫。 

Spider是一个功能很强的自动提取网页的程序 ,它为搜索引擎从万维网上下载网页 ,是搜索引擎的重要组成 .它经过请求站点上的 HTML文档访问某一站点。它遍历 Web空间 ,不断从一个站点移动到另一个站点 ,自动建立索引 ,并加入到网页数据库中。网络爬虫进入某个超级文本时 ,它利用 HTML语言的标记结构来搜索信息及获取指向其它超级文本的 URL地址 ,能够完全不依赖用户干预实现网络上的自动爬行和搜索。 

Spider的队列 

( 1) 等待队列 :新发现的 URL被加入到这个队列 ,等待被 Spider程序处理 ;

( 2) 处理队列 :要被处理的 URL被传送到这个队列。为了避免同一个 URL被多次处理 ,当一个 URL被处理过后 ,它将被转移到完成队列或者错误队列 (如果发生错误 ) 

( 3) 错误队列 :如果在下载网页是发生错误 , URL将被加入 到错误队列。

( 4) 完成队列 :如果在处理网页没有发生错误 , URL将被加入到完成队列。 

网络爬虫搜索策略

在抓取网页的时候 ,当前网络爬虫一般有两种策略 :无主题搜索与基于某特定主体的专业智能搜索。其中前者主要包括 :广度优先和深度优先。广度优先是指网络爬虫会先抓取起始网页中链接的所有网页 ,然后再选择其中的一个链接网页 ,继续抓取在此网页中链接的所有网页。这是最常见的方式,因为这个方法能够让网络爬虫并行处理 ,提高其抓取速度。深度优先是指网络爬虫会从起始页开始 ,一个链接一个链接跟踪下去 ,处理完这条线路之后再转入下一个起始页 ,继续跟踪链接。这个方法有个优点是网络爬虫在设计的时候比较容易。大多数网页爬行器采用宽度优先搜索策略或者是对这种策略的某些改进。

在专业搜索引擎中 ,网络爬虫的任务是获取 Web页面和决定链接的访问顺序 ,它一般从一个 ”种子集 (如用户查询、 种子链接或种子页面 ),以迭代的方式访问页面和提取链接。搜索过程中 ,未访问的链接被暂存在一个称为 ”搜索前沿 (Spider Frontier)的队列中 ,网络爬虫根据搜索前沿中链接的 ”重要程度 ”决定下一个要访问的链接。如何评价和预测链接的 ”重要程度 (或称价值 )是决定网络爬虫搜索策略的关键。

众多的网络爬虫设计各不相同 ,但归根结底是采用不同的链接价值评价标准。

常见开源网络爬虫介绍及其比较

Nutch

开发语言: Java

简介:

Apache的子项目之一, 属于Lucene项目下的子项目。

Nutch是一个基于Lucene, 类似Google的完整网络搜索引擎解决方案, 基于Hadoop的分布式处理模型保证了系统的性能, 类似Eclipse的插件机制保证了系统的可客户化, 而且很容易集成到自己的应用之中。 

 

Larbin

开发语言: C++

简介

larbin是一种开源的网络爬虫/网络蜘蛛, 由法国的年轻人 Sébastien Ailleret独立开发。larbin目的是能够跟踪页面的url进行扩展的抓取, 最后为搜索引擎提供广泛的数据来源。

Larbin只是一个爬虫, 也就是说larbin只抓取网页, 至于如何parse的事情则由用户自己完成。另外, 如何存储到数据库以及建立索引的事情 larbin也不提供。

latbin最初的设计也是依据设计简单可是高度可配置性的原则, 因此我们能够看到, 一个简单的larbin的爬虫能够每天获取500万的网页, 非常高效。

 

Heritrix

开发语言: Java

简介

Nutch比较

      Heritrix  Nutch。二者均为Java开源框架, Heritrix  SourceForge上的开源产品, NutchApache的一个子项目, 它们都称作网络爬虫/蜘蛛(  Web Crawler) , 它们实现的原理基本一致: 深度遍历网站的资源, 将这些资源抓取到本地, 使用的方法都是分析网站每一个有效的URI, 并提交Http请求, 从而获得相应结果, 生成本地文件及相应的日志信息等。

  Heritrix 是个 "archival crawler" -- 用来获取完整的、 精确的、 站点内容的深度复制。包括获取图像以及其它非文本内容。抓取并存储相关的内容。对内容来者不拒, 不对页面进行内容上的修改。重新爬行对相同的URL不针对先前的进行替换。爬虫经过Web用户界面启动、 监控、 调整, 允许弹性的定义要获取的URL

二者的差异:

Nutch 只获取并保存可索引的内容。Heritrix则是照单全收。力求保存页面原貌 

Nutch 能够修剪内容, 或者对内容格式进行转换。 

Nutch 保存内容为数据库优化格式便于以后索引; 刷新替换旧的内容。而Heritrix 是添加(追加)新的内容。 

Nutch 从命令行运行、 控制。Heritrix  Web 控制管理界面。 

Nutch 的定制能力不够强, 不过现在已经有了一定改进。Heritrix 可控制的参数更多。

Heritrix提供的功能没有nutch多, 有点整站下载的味道。既没有索引又没有解析, 甚至对于重复爬取URL都处理不是很好。

这篇关于网络爬虫调研报告的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1113739

相关文章

如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解

《如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解》:本文主要介绍如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别的相关资料,描述了如何使用海康威视设备网络SD... 目录前言开发流程问题和解决方案dll库加载不到的问题老旧版本sdk不兼容的问题关键实现流程总结前言作为

Java使用POI-TL和JFreeChart动态生成Word报告

《Java使用POI-TL和JFreeChart动态生成Word报告》本文介绍了使用POI-TL和JFreeChart生成包含动态数据和图表的Word报告的方法,并分享了实际开发中的踩坑经验,通过代码... 目录前言一、需求背景二、方案分析三、 POI-TL + JFreeChart 实现3.1 Maven

SSID究竟是什么? WiFi网络名称及工作方式解析

《SSID究竟是什么?WiFi网络名称及工作方式解析》SID可以看作是无线网络的名称,类似于有线网络中的网络名称或者路由器的名称,在无线网络中,设备通过SSID来识别和连接到特定的无线网络... 当提到 Wi-Fi 网络时,就避不开「SSID」这个术语。简单来说,SSID 就是 Wi-Fi 网络的名称。比如

Java实现任务管理器性能网络监控数据的方法详解

《Java实现任务管理器性能网络监控数据的方法详解》在现代操作系统中,任务管理器是一个非常重要的工具,用于监控和管理计算机的运行状态,包括CPU使用率、内存占用等,对于开发者和系统管理员来说,了解这些... 目录引言一、背景知识二、准备工作1. Maven依赖2. Gradle依赖三、代码实现四、代码详解五

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

poj 3181 网络流,建图。

题意: 农夫约翰为他的牛准备了F种食物和D种饮料。 每头牛都有各自喜欢的食物和饮料,而每种食物和饮料都只能分配给一头牛。 问最多能有多少头牛可以同时得到喜欢的食物和饮料。 解析: 由于要同时得到喜欢的食物和饮料,所以网络流建图的时候要把牛拆点了。 如下建图: s -> 食物 -> 牛1 -> 牛2 -> 饮料 -> t 所以分配一下点: s  =  0, 牛1= 1~

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

poj 3068 有流量限制的最小费用网络流

题意: m条有向边连接了n个仓库,每条边都有一定费用。 将两种危险品从0运到n-1,除了起点和终点外,危险品不能放在一起,也不能走相同的路径。 求最小的费用是多少。 解析: 抽象出一个源点s一个汇点t,源点与0相连,费用为0,容量为2。 汇点与n - 1相连,费用为0,容量为2。 每条边之间也相连,费用为每条边的费用,容量为1。 建图完毕之后,求一条流量为2的最小费用流就行了