2024年3月24日发(作者:)

网络爬虫调研报告

基本原理

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 Ai

lleret独立开发。larbin目的是能够跟踪页面的url进行扩展的抓取,最后为搜索

引擎提供广泛的数据来源。

Larbin只是一个爬虫,也就是说larbin只抓取网页,至于如何parse的

事情则由用户自己完成。另外,如何存储到数据库以及建立索引的事情 larbin

也不提供。

latbin最初的设计也是依据设计简单但是高度可配置性的原则,因此我

们可以看到,一个简单的larbin的爬虫可以每天获取500万的网页,非常高效。

Heritrix

开发语言:Java

简介

与Nutch比较