2 三种开源网络爬虫性能比较
目前,互联网上推出有许多的开源网络爬虫,易于开发和扩展的主要包括 Nutch、Larbin、Heritrix 等,下面即针对这三类爬虫进行实用性内容介绍[5]:
( 1) Heritrix 是 Java 开发的开源 Web 爬虫系统,是 Inter-net Archive 的一个爬虫项目。这是开源、可扩展、Web 范围内并带有存档性质的网络爬虫。该系统允许用户选择扩展各个组件,进而实现自定的抓取逻辑。Heritrix 默认提供的组件能够完成通用爬虫的功能,用户既可根据实际需求定制相应模块,也可实现聚焦爬虫的功能。
( 2) Larbin 是一种由 C + + 开发的开源网络爬虫,larbin能够跟踪页面的 URL 进行扩展的抓取,从而为搜索引擎提供广泛的数据来源。该程序由法国人 Sébastien Ailleret 独立开发,只是 2003 年后,Labin 已退出了更新。
( 3) Nutch 是 Apache 的子项目之一,且是 Lucene 下的子项目,重点是其中提供了搜索引擎所需的全部工具,当然,Nutch 只获取并保存可索引的内容,却无法保持抓取网页原貌。
在此,研究可得三种开源网络爬虫的功能特点和使用范围比较,具体如表 1 所示。
通过如上内容分析,可以得出以下结论:
( 1) 从功能方面来说,Heritrix 与 Larbin 的功能类似,都是一个纯粹的网络爬虫,提供网站的镜像下载。Nutch 则是一个网络搜索引擎框架,爬取网页只是其功能的一部分。
( 2) 从分布式处理来说,Nutch 支持分布式处理,而其它两个尚不支持。
( 3) 从爬取的网页存储方式来说,Heritrix 和 Larbin 都是将爬取所获内容保存为原始类型的内容,而 Nutch 是将内容保存到其特定格式中去。
( 4) 对于爬取所获内容的处理来说,Heritrix 和 Larbin 都是将爬取后的结果内容不经处理直接保存为原始内容。而Nutch 却将对文本进行包括链接分析、正文提取、建立索引等深层处理。
( 5) 从爬取的效率来说,Larbin 效率较高,因为其实现语言是 c + + 并且功能相对单一,但是该程序缺乏必要的更新服务。
在进行了有关软件的扩展性、镜像保存方式及软件更新等方面因素的综合分析比对后,本文将择取并利用 Heritrix开源软件来实现聚焦爬虫的设计。
3 基于 Heritrix 软件聚焦爬虫的设计
在利用开源 Heritrix 软件进行聚焦爬虫设计时,以中国西藏网为例,针对有目标网页特征的网页级信息配置正则表达式,采用深度优先搜索策略进行 URL扩展,利用网页内容关于“主题相关度”[6]的分析算法进行主题判断,实现聚焦爬虫的网站采集功能。
3. 1 开源 Heritrix 软件工作原理
Heritrix 开源软件采集网页的方法是采取深度优先搜索策略,遍历网站的每一个 URI,分析并生成本地文件及相应的日志信息等,Heritrix 软件抓取的是与原网页一致的、完整的深度复制,包括图像以及其他非文本内容,抓取后并存储相关的内容。在网页采集过程中,Heritrix 软件不对页面上内容进行修改,爬行相同的 URL 不进行替换。Heritrix 软件通过 Web 用户界面启动、监控、调整、允许弹性地定义要获取的 URL.Heritrix 软件包含核心模块和插件模块。核心模块能够配置但不能覆盖,插入模块配置是否加载,也可以由第三方模块取代。
3. 2 开源 Heritrix 软件关键模块的改进
3. 2. 1 修改 Extractor 解析器
修改 Heritrix 的 Extractor 解析器时,可采用正则表达式的方式扩展待抓取的网页。例如,在抓取中国西藏网的新闻时,在 Extractor 解析器配置正则表达式: http: / /tb. tibet. cn/[0 -9a - z]* /[a - z/]* /[0 -9]* /[0 -9a - z -]* . htm( |l) S|,这样就把服务器域名下的网页所有信息全部抓取下来。但是,考虑垂直搜索引擎的使用范围和聚焦爬虫对网页主题的过滤功能,需要设计与实际主题搜索应用相匹配的专用解析器,专用解析器 extract( CrawlURL) 要实现以下功能:
( 1) 对所有不含有要抓取的结构化信息页面的 URL、又不含有可以集中提取前者 URL 的种子型 URL,都不作处理。
( 2) 从可以集中提取含结构化信息页面 URL 的种子型URL( 如地方新闻目录 URL) ,提取全部的含结构化信息页面的 URL( 如地方信息列表 URL) .
( 3) 从含结构化信息页面的 URL 提取所需的结构化信息,并加以记录。
3. 2. 2 扩展 Frontierscheduler 模块
FrontierScheduler 是一个 PostProcessor,其作用是将 Ex-tractor 所分析得出的链接加入到 Frontier 中,以待继续处理,聚焦爬虫实现关键词对主题的判断算法就在该模块中构建并执行。主题相关度判断的关键代码如下:
3. 3 Heritrix 聚焦爬虫接口的设计
Heritrix 网络爬虫是一个通用的网页采集工具,需要对Heritrix 抓取和分析网页的行为进行一定的控制,修改 Ex-tractor 和 Frontierscheduler 模块后,需要对其各个功能接口进行操作调试,由此保证聚焦爬虫功能的全面实现。下面即对重要功能接口进行必要介绍。
( 1) 应用接口
在设计聚焦爬虫时,应定制一个应用接口模块以供用户使用,具体将负责与 Heritrix 软件关联,并提供启、停爬虫、获取网址、采集关键词等功能实现。
( 2) 数据库查询和修改接口
在设计聚焦爬虫时,应设计相应的数据库接口,负责下载并发现与主题相关的网页信息、再保存到数据库的表中。存储的字段包括: 网页 URL、本地存储相对路径、下载时间、HTTP 头中抽取的网页编码,关键词 id 等。
( 3) 去重接口
因为 Heritrix 对相同的 URL 不进行替换,爬虫工作时会下载大量重复的网页,为了节省空间、并获取准确的采集结果,就必须按照设定规则对重复下载的网页进行删除。
4 结束语
通过以上对开源 Heritrix 软件的改进,聚焦爬虫已能根据预设的关键词进行网站抓取,并按照算法判断,当网页的主题相关度阈值大于 0. 6 时,聚焦爬虫即下载网页,至此爬虫实现了指定网站的主题搜索。综上可见,可以改进开源网络爬虫并使其在垂直搜索引擎中获得成功理想使用。
参考文献:
[1]刘运强。 垂直搜索引擎的研究与设计[J]. 计算机应用与软件,2010,127( 7) : 130 - 132.
[2]刘伟光。 一种基于改进向量空间模型的藏文主题网页采集方法[J]. 图书馆学研究,2014,16: 55 -62.
[3]陈欢。 面向垂直搜索引擎的聚焦网络爬虫关键技术研究与实现[D]. 武汉: 华中师范大学,2014.
[4]焦赛美。 网络爬虫技术的研究[J]. 琼州学院学报,2010,18( 5) : 28 -30.
[5]网络爬虫浅析[EB/OL]. [2011 - 03 - 05].
[6]罗刚,王振东。 自己手动写网络爬虫[M]. 北京: 清华大学出版社,2010: 34 - 36.