当前位置:文档之家› 基于P2P的分布式主题爬虫系统的设计与实现

基于P2P的分布式主题爬虫系统的设计与实现

情报学报  ISSN1000-0135第29卷第3期402-407,2010年6月JOURNALOFTHECHINASOCIETYFORSCIENTIFICANDTECHNICALINFORMATIONISSN1000-0135Vol.29 No.3,402-407June 2010收稿日期:2008年12月18日作者简介:朱学芳,男,1962年生,毕业于北京大学应用数学专业、博士,南京大学博士后,教授,博士生导师。

主要研究领域:计算机图像桙信号处理、模式识别、信息检索自动化理论与技术及应用、信息资源管理等。

E-mail:xfzhu@nju.edu.cn。

韩占校,男,1981年生,毕业于河北大学信息管理与信息系统专业,硕士生,主要研究领域:网络信息检索技术、图像处理应用技术等。

doi:10.3772桙j.issn.1000-0135.2010.03.003基于P2P的分布式主题爬虫系统的设计与实现朱学芳 韩占校(南京大学信息管理系、多媒体信息处理研究所,南京210093)摘要 本文详细叙述了一个用于信息检索的基于P2P的分布式爬虫系统的设计和实现过程。

系统基于锚文本上下文进行主题相关性判定,采用P2P式的分布式结构,充分利用其动态增加新结点的特性来动态地扩展系统的规模,提高系统的整体吞吐能力,以满足现在和将来的用户对日益增长的大数据量检索需求。

实验结果表明,可根据用户给定的主题对网页链接上下文进行主题相关性判定以引导爬虫的爬行路径,能够有效地获取相关主题信息。

关键词 网络爬虫 对等网络 分布式计算 信息检索 主题爬虫DesignandImplementationofDistributedTopicCrawlerBasedonP2PforImageRetrievalZhuXuefangandHanZhanxiao(InstituteofMultimediaInformationProcessing,Dept.ofInformationManagement,NanjingUniversity,Nanjing210093)Abstract Topicalcrawlersorfocusedcrawlersadaptingtothespecificthemeandpersonalizedsearcharerequiredinordertomeettheneedsoftherapidgrowthofwebinformation,whichsuppliesmoreaccurateandmorecomprehensiveinformationandservicesintheshortesttime.Thedesignandimplementationofadistributedwebcrawlerisproposedinthepaper.ItisbasedonP2P-distributedarchitectureandmakesfulluseofP2P-styledynamiccharacteristicsofaddingnewnodestoincreasethescaleandimprovetheoverallcapacity.Theexperimentsshowedthatthissystemcouldefficientlyprovideuserswithrelevantfilesorwebpagesaccordingtothetopic(s)theydefined.Keywords Webcrawler,peertopeer,distributedcomputing,informationretrieval,topicalcrawler1 引 言众所周知,Web应用日益趋于多样化,其中的数据规模越来越庞大,使得海量数据的检索处理变成了研究者关注的问题。

如何在存储和处理海量数据以及传递给用户更直接有效的结果三者之间达到平衡,成为未来Web应用要解决的一个难点问题。

目前大多数搜索引擎都是将世界上的各个网站的数据汇集到一起再进行处理,这种方式要求拥有大量的计算机和网络资源,一般单位或部门难以负担得起这种运行成本[1]。

考虑到网络数据的分布式特性,人们希望利用分布于全球的其他普通PC来获取网络数据,即借助于普通PC用户提供的空闲运算能力,形成比较经济的运行方式。

更为重要的是,爬虫系统之间的资源共享,可以大量减少网络的负载,可以获得比较高的更新频率,并且不对网络造成负担[2,3]。

提高检索效率的另一方面考虑是,有效确定—204—检索范围。

相对通用搜索引擎,主题搜索引擎的检索范围相对小,而查准率和查全率不受影响。

主题爬虫是主题搜索引擎的核心与基础,它试图收集与预先给定主题相关的网页,对于Web上与主题无关的区域都不予访问,所以能大大减少网络信息的访问流量和文档下载量,可以减少计算机资源开销。

为了高效地获取与主题相关的网络资源,研究者提出了许多主题定制爬行策略和相关算法,尽可能地确保获取的网页的质量。

例如,由DeBra等[4]提出的FishSearch方法,该类爬虫通常采用最相似优先的算法,最先访问与主题相似度最高的页面。

其他较为相似的有BestFirstSearch算法、基于Web超链图评价的方法和基于分类器预测的方法等,它们采用的是基于分类模型来描述用户感兴趣的主题和预测网页的主题相关度[5]。

Chakrabarti等[6]还提出了分别基于两种不同的模型来计算网页主题相关性和URL访问次序的方法。

在我国也进行了面向机械、民航、刑侦等网页的信息抽取与主题爬虫的实验研究[7~9]。

本文详细叙述一个用于信息检索的基于JXTA①的对等(peertopeer,P2P)网络分布式主题爬虫系统的设计和实现过程。

在系统中,我们采用链接的锚文本及其上下文作为用于主题匹配的对象,以引导爬虫的爬行路径;采用P2P式的分布式结构,充分利用其动态增加新结点的特点,动态地扩展系统的规模,提高了系统的整体吞吐能力,能满足现在和将来的用户对日益增长的大数据量的检索需求。

实验结果表明,本系统可根据用户给定的主题,能够有效地抓取相关主题的文件。

本文的结构为:第1和第2节分别叙述用于信息检索的,基于JXTA的,P2P分布式爬虫系统的体系结构与核心技术;第3节为实验结果及分析;第4节为结束语。

2 体系结构对于网络主题爬虫设计来说,一个单机系统的能力提升毕竟有限,为此,我们设计的目标是利用低廉的PC来扩展面向主题信息检索性能的爬虫系统,采用P2P技术,对系统进行扩展,设计成为一个架构如图1所示的分布式系统。

基于P2P的分布式主题爬虫系统由各个子结点组成,其中上半部分与下半部分形成对称结构,每一部分架构图主要包括一个爬行管理器(SpiderManager,SM)、多个下载线程(Downloader)和一个DNS转换器等。

在整个架构中,爬行管理器是爬行系统的核心部件,它先由应用层启动,并将其他组件(如DNS解析器、下载线程等)注册进来,然后由它同各个Downloader通信,分发URL。

对于各个下载线程来说,只有SM是可见的。

SM对从应用层得到的URL按照一定的策略进行排队,并在一定的时机分发。

在得到URL之后,SM先同DNS解析器进行交互,将域名转换为相应的IP地址。

在此利用一个缓冲IPCache,存储域名及相应的IP地址。

具体转换过程是,先根据URL得到的主机域名从IPCache中查找相应的IP地址,若存在则返回IP地址;否则请求DNS解析器,将DNS解析器的返回值即IP地址存放到IPCache中去,并将IP地址返回。

SM能控制爬虫的运行状态(运行、暂停、终止)、爬行速度,以及爬虫对同一域名访问的间隔(本文系统实验中的时间间隔设置为30s)。

Downloader是基于HttpClient[10]的线程实现。

HttpClient是ApacheJakartaCommon下的子项目,可以用来提供高效的、最新的、功能丰富的、支持HTTP协议的客户端编程工具包,并且支持HTTP协议最新的版本和建议。

Downloader根据URL将网页下载、存储,并将下载状况反馈给应用层。

应用层对URL下载情况进行记录和跟踪,SM对Downloader的运行状态和数量进行控制。

在应用层中,关键是如何判断网页中的内容(如图片等)是否与主题相关。

考虑到网页爬虫是一个沿着存在于Web页面之间的超链接遍历Web的过程,大多数Web页面因为内容相关才会有联系,通常借助于HTML锚标签链接联系在一起。

HTML锚标签周围的文本往往精练地描述了目标网页的内容,用于指导链接所指向的Web页面的主题内容,不仅可以提高用户浏览网页的效率,而且网页爬虫可借助这些文本信息,来指导网页爬虫的爬行。

本论文描述的爬虫系统,就是以图像链接的锚文本及—304—基于P2P的分布式主题爬虫系统的设计与实现①JXTA是Sun微系统对等网络(P2P)的标准。

这是一个努力的方向,以它来促进和探究分布式计算的新方法。

JXTA这个名字既用来指代这个标准,也用来指代研究出来的技术,这种技术处于传输平台和P2P通信协议的环绕之中。

http:桙桙baike.baidu.com桙view桙66857畅htm,2008-12-15图1 分布式爬虫系统结构图 其周围的上下文作为主题相似度判断的依据。

为了提高访问网页的主题相关性,我们在用户给定主题内容的相关性判定基础之上,对网页的主题相关性也进行判定。

在此过程中,应用层初始化一些URL种子,并发送给SM。

应用层对下载的网页分析,进行URL提取,然后将满足条件的URL放到一棵红黑树中。

当该红黑树生长到一定规模后,将由一个独立线程对该红黑树的URL进行检测,去掉已有的URL,将新的URL存储到硬盘上,并告诉SM存储文件名,以备在适当的时机由SM将其载入,分发给各个Downloader。

与此同时,应用层会生成一个新的红黑树,接收新分析出的URL。

在试验中,我们采用每个结点按N=200个下载线程、1个DNS解析器、2个应用层、1个SM进行配置。

扩展了单机系统后,P2P系统就可以流畅地运行。

3 核心技术3畅1 分布式系统设计 本文的爬虫系统是一种基于JXTA的P2P式分布式系统[11~13]。

JXTA架构可以分为3个层面:①核心层。

包含P2P应用的关键机制的构建模块,包括发现、传输(包括防火墙处理)、对等体和对等组的创建以及相关安全等。

②服务层。

包括对于P2P网络不是必需的、但很通用的功能,如查找、共享、索引、代码缓存和内容缓存的机制。

③应用层。

包括应用JXTA服务开发出来的完整的P2P应用程序,如P2P即时消息、P2P电子邮件系统等应用程序。

相关主题