基于 HTMLParser 信息提取的网络爬虫设计

郑力明,男,博士,副教授,研究方向:计算机网络与通信。易平,男,硕士研究生,研究方向:计算机

网络与通信。

基于HTMLParser 信息提取的网络爬虫设计

Design of Crawler Based on HTML Parser Information Extraction

(暨南大学)郑力明,易平

(Jinan University )ZHENG Li-Ming, YI Ping

摘要:无论是通用搜索还是垂直搜索,其关键的核心技术之一就是网络爬虫的设计。本文结合

HTMLParser 信息提取方法,对生活类垂直搜索引擎中网络爬虫进行了详细研究。通过深入分析生活类

网站网址的树形结构的构架,开发了收集种子页面URL 的模拟搜索器,并基于HTMLParser 的信息提取

方法,从种子页面中提取出与生活类主题相关的目标URL。经实验测试证明该爬虫的爬准率达

93.552%,爬全率达96.720%,表明该网络爬虫是有效的,达到中等规模的垂直搜索企业级应用

的要求。

关键词:网络爬虫;垂直搜索; HTMLParser

中图分类号:TP393 文献标识码:A

Abstract :Whether general search engine or vertical search engine, the design of web crawler is the core

technology. In this article, a novel system of life-theme web crawler based on HTMLParser information

extraction is thoroughly studied. In this system, a simulation searcher is designed for collecting the seed

URL by analyzing tree structure of life-theme website, then, based on the discussion of HTMLParser

information extraction, the target URL that relate to life-theme is extracted from the seed pages. Empirical

studies show that the Pr 93.552%ecision = and the Re 96.720%call =, proving its effectiveness

and achieving requirements for general enterprise-level application of vertical search engine. Key words :web crawler; vertical search engine;HTMLParser

1 引言

随着互联网网页数量的不断增长,搜索引擎得到了蓬勃的发展。而一个搜索引擎系

统性能的优劣很大程度上取决于其抓取页面的网络爬虫的设计。但多元化信息的不断增

长,使得通用的搜索引擎已经不能满足人们对个性化信息检索服务的需求[1]。因此高效

率的网络爬虫的设计成为了各搜索引擎的主要技术挑战之一

[2][3]。 网络爬虫种类很多,如有基于全文搜索的网络爬虫[4]

,聚类网络爬虫[5],主题网络爬虫[6],基于本体的网络爬虫[7]等。随着垂直搜索的蓬勃发展,基于特定主题的网络爬虫

成为当前研究的热点之一。其中关系到百姓衣食住行的生活类垂直搜索更是处于垂直搜

索的前沿,甚至成了垂直搜索的代名词。本文就是针对生活类网站的特点结合

HtmlParser 的信息提及策略设计网络爬虫。

2

系统模型

图1 基于HTMLParser 信息提取的网络爬虫系统构架

如图1所示首先针对生活类网站设计一个模拟搜索器,通过模拟生活类行业网站内

的站内搜索将种子页面URL 插入到种子队列Seed_Url 表中,让爬行器Crawler 对其进

行抓取,并将种子页面放入缓存服务器,再通过HTMLParser 信息提取方法,从种子页

面中提取出目标URL存入Target_Url表,爬行器Crawler会检测Target_Url中是否包含未抓取的页面,若有未抓取的页面,就从Internet服务器中对其进行抓取并保存到页面服务器。

3 HtmlParser信息提取策略

3.1网址模拟搜索器

随着动态网站开发技术的发展,ASP,JSP,PHP等都采用了页面参数传递的机制获得用户输入的参数信息。因此几乎所有网址都以不同的参数命名,并以树形结构来构架[8]。每个树的节点就是一个文件夹,各个“树叶”即是页面。文献[8]中用此方法成功地解决了判断页面是否为新闻页面的问题。而对于生活类网站,大多数都有站内搜索,这些搜索正是使用这种参数传递的方式接受不同的参数进行查询。生活类网址命名树形结构图如图2所示,这类网站基本上都由城市(city),分类(type),页面数(page)等其他不同参数构成,或者直接由这些基本参数为文件夹命名。因此,可以通过设置不同网址参数模拟搜索出与生活相关的页面列表,即模拟搜索器,从而过滤掉不相关的页面。并建立Seed_Url表将上述种子页面的URL插入到该URL队列。

图2 生活类网址树形结构

3.2 Url表队列的建立

当开始要抓取种子页面时,就要通过网址模拟搜索器将种子页面的URL插入到Seed_Url队列中,其表结构如表1所示,将url字段设为主键,主要是为了防止重复链接的出现[4],而如果页面已经被抓取,就会在相应记录的urlDesc字段中插入“readed”,

表1 Seed_Url表结构

来标识该URL已经被抓取。而从Seed_Url表中抓取页面后,对其进行解析所获得的目标页面的URL将存储在Target_Url表中。其数据表结构与Seed_Url表一样。爬行器Crawler会自动检测该表中的URL队列是否包含UrlDesc=Null的记录,若有就从该记录中调出URL送入爬行器Crawler进行抓取,并将页面存入页面服务器。

3.3 HtmlParser提取链接信息

当从Seed_Url表的URL队列中抓取种子Html页面后,就对其进行解析,提取出目标页面URL链接插入target_Url表中。这是整个网络爬虫的核心之一。本文主要是利

用开源的Java库HTMLParser[9],对页面的Html代码进行分析,从中提取出目标链接。其主要原理是通过将访问的Html页面中的文本,注释,标签等节点转换成线性的节点,从而提取出嵌套在该节点中的信息[10]。其代码如下:

private List parserUrl(Parser parser) {

// 根据node名与该标签包含的属性值通过AndFilter截取该节点所包含的内容 NodeFilter filter = new AndFilter(new TagNameFilter("node"),

new HasAttributeFilter("attribute", "value"));

// 建立列表保存提取出来的Url

List urlList = new ArrayList();

// 对满足该过滤条件的页面进行解析

NodeList nodeList=parser.parser(filter);

// 逐个按顺序取出满足条件的信息

for(int i=0;i

Node node = nodeList.elementAt(i);

String url = node.toHtml();

urlList.add(url);

}

如上所示,通过抓取种子页面后,利用HTMLParser对其页面的Html代码解析,从中提取页面中的超级链接的网址”

4实验与系统性能测试

4.1多线程的爬行器Crawler程序测试

本文结合Eclipse及java的多个开发包实现该系统的设计,开发环境为:OS:Windwos XP ,CPU:Dual2.20GHz,内存:2.00GB。本文考虑了系统资源和系统效率的平衡,采取了单任务,单线程,多任务,多线程不同的组合(多任务以5个任务为例),对本系统进行测试,其比较数据如表2:

表2 多线程与单线程效率比较

由表2的测试结果可以看出,单任务虽然占系统资源少但效率太低,而单线程多任务的方式效率最高,但占有的系统资源也最高。考虑到要对页面进行大数据量的抓取。因此本文采用了多任务,多线程并发对页面进行抓取的方式。

4.2结果分析

文献[6] 、[11]提出的评估网络爬虫系统的指标主要有两个:(1)爬准率(Precision)(2)爬全率(ReCall)。其计算公式如下:

Pr ecision=采集的目标页面数

总爬行页面数

Re call=

采集的目标页面数

总目标页面数

本次实验以国内著名生活类网站“赶集网”(https://www.360docs.net/doc/c114470095.html,/)为例抓取了1,952,340个页面(总爬行数),总容量25.5GB。其中,采集目标页面数为1,826,448

个页面。总目标数为1,888,386个页面。因此可以得到爬准率1826448Pr 93.552%1952340ecision ==,爬全率 1826448Re 96.720%1888386call ==。

表明该网络爬虫是有效的,达到中等规模的垂直搜索企业级应用的要求。

5结论

随着个性化信息检索需求的迅速增长,垂直搜索在各行业内得到迅速发展。如何针对各行业网站的特征设计出相应策略的网络爬虫,成为了开发垂直搜索的研究热点。而对不相关主题的过滤,是设计主题网络爬虫的关键技术之一。本文通过分析生活类网站网址,构造出一种全新的模拟搜索器。提取出与主题相关的信息页面的种子URL 队列,再结合HTMLParser 的信息提取方法,提取出与生活类主题相关的URL,从而过滤与生活类主题不相关的页面,实现生活类服务行业中网络爬虫的设计。最后经实验测试表明该网络爬虫是有效的,达到中等规模的垂直搜索企业级应用的要求。我们将深入研究分布式网络爬虫,以进一步提高抓取页面的效率。

本文作者创新点:通过分析生活类网站网址,构造出一种全新的模拟搜索器。提取出与主题相关的信息页面的种子URL队列,再结合HTMLParser的信息提取方法,提取出与生活类主题相关的URL,从而过滤与生活类主题不相关的页面,实现生活类服务行业中网络爬虫的设计。

参考文献:

[1] 李勇,韩亮.主题搜索引擎中网络爬虫的搜索策略研究.计算机工程与科学.2008,30(3):4-6 56

[2] Kunpeng Zhu,Zhiming Xu,Xiaolong Wang,and Yuming Zhao.A Full Distribute Web Crawler Based on Structred Network..Lecture Notes in Computer Science.2008, 4993:478-483

[3] Shoubin Dong,Xiaofeng Lu,Ling Zhang,and Kejing He. An Efficient Parallel Crawler in Grid Environment. Lecture Notes in Computer Science .2004, 3032:229-232

[4] 徐远超,刘江华,刘丽珍等.基于Web 的网络爬虫的设计与实现.微计算机信息.2007,23(7):119-121

[5] Yun Huang,Yun Ming Ye. wHunter: A Focused Web Crawler – A Tool for Digital Library. Lecture Notes in Computer Science.2004,3334:519-522

[6] 夏诏杰,梁春燕,郭力.化学主题网络爬虫的设计和实现.计算机工程与应用.2006,204-205,229

[7]Lefteris Kozanidis.An Ontology-Based Focused Crawler.LNCS.2008,5039:376-379

[8] Yong Wang, Yiqun Liu, et al. A News Page Discovery Policy for Instant Crawlers. LNCS.2008,4993:520-525

[9] https://www.360docs.net/doc/c114470095.html,

[10] 邱哲,符滔滔.开发自己的搜索引擎Lucene2.0+Heritrix.人民邮电出版社.2007

[11] F Menczer ,G Pant ,M Ruiz et al. Evaluating topic- driven web crawlers[C].In :Proc ACM SIGIR 2001,2001

作者简介: 郑力明(1971-),男,广东人,博士,副教授, 硕士生导师,主要研究方向为计算机网络与通信;易平(1984-),男,湖南人,硕士研究生,主要研究方向为计算机网络与通信。

Biography: Zheng Li-Ming(1971-),male, Guangdong, associate professor, Ph.D. Department of Electronic Engineering, College of Information Science and Technology, Jinan University. His research interests are in the areas of computer network and communication.

YI Ping(1984-), male, Hunan, graduate student, his research interests are in the areas of computer network and communication.

相关文档
最新文档