您好,欢迎来到筏尚旅游网。
搜索
您的当前位置:首页基于Java的多线程网络爬虫设计与实现

基于Java的多线程网络爬虫设计与实现

来源:筏尚旅游网
MicrocomputerApplicationsVoL26,No.7,2010研究与设计微型电脑应用2010年第26卷第7期文章编号:1007-757X(2010)7-0021-02基于Java的多线程网络爬虫设计与实现姜梦稚摘要:网络爬虫是目前比较流行的一种网页检索工具,其设计和实现也需要不断优化和改进。通过描述网络爬虫设计与实现中所碰到的问题,提供解决这些问题的方法,并给出实现这些目标的网络爬虫设计方法,提供该设计的Java语言版实现。关键词:网络爬虫;链接检索;文字匹配;爬虫设计;多线程中图分类号:TP316文献标志码:A表达式。尽管具体的实现有多种方式,搜集链接也可以采用后面所提到的HtmlParser包,但是采用正则表达式,是一种目前,对于全球大多数互联网用户来说,搜索引擎是其准确获得所需要信息或者知识的最有效的工具。但是对于所有的搜索引擎来说,最重要的性能指标有两个:查伞率和查准率。查全率与搜索引擎搜集的网贞数量和质量有关。本文介绍的是用于搜集网页,提高查伞率的最重要的方便,快捷的手段,Java语言也提供对正则表达式的支持。多线程程序足编程中比较复杂的问题,除了对线程的调试比较凼难外,对线程所使用的资源的控制也同样复杂。在Java平台下对多线程的编程有充分支持,因此在设计Crawler的多线程实现时,采用了Synchronous关键宁,原子数(AtomicInteger)和l线程’池【31,通过使用线程池,在应用启动的时候,设置所需创建的线程数量,一旦线程池为窄,则挂起当前请求,等待窄闲的线程出现;原子数则可以保证程序中的计数以瓦斥的方式操作,保证了递增和递减操作的原子性;而Synchronous保证了不同线程在访问数据的时候不会出现两个线程同时访问一个数据。本文中实现的Crawler中第三个考虑的问题就是获取网页的内容、提取网页摘要信息和标题信息。网页内容的获取方式有多种,比较常用的就是想网页发出一个Http请求,并获取返回的字符流。考虑到实现这种请求/响应方式的复0引言工具一网络爬虫(WebCrawler)的设计与实现。网络爬虫的=E要作用是搜集曩联网的网页,也叮以用它来定期搜集某个网站的内容,跟踪判断网站的发展,或者做站内搜索引擎。从网络爬虫的工作原理来看,“网络爬虫”是一个比较形象的名字,它是在互联网内,通过网页链接,从当前网页爬到F一个网页来进行网页内容搜集的T具。它所需完成的T作llJ如卜.:(1)在一个网页七,获取网页的标题和网页中的摘要;(2)将搜集到的网页标题,链接,网页的摘要放入数据库中;(3)根据当前网页的内容,搜集网页中的链接信息,并根据链接顺序搜索相应链接网页的内容。l杂性,本文采用了HtmlPard4J包来具体实现网页内容的获WebCrawler中的若干问题不同的WebCrawler,在设计的时候侧重各有不同,本文所介绍的WebCrawler在设计的时候主要考虑解决以下几个问题:(1)WebCrawler遍历网页中的所彳J.链接,并且能对所搜索的网贞进行搜索深度的限制;(2)WebCrawler能够提取出网贞中的摘要和标题信息,并且保存剑数据库中:(3)要求能够对已有的搜索引擎的搜索结果再优化,提高所设计的Crawler的扩展能力;(4)要求能够采用多线程的方式,提高搜索的效率。针对前述的四个目标,在设计Crawler的时候,具体考虑了如下一些问题。首先Crawler的搜索深度的问题,网贞中的链接关系是相当复杂的,一组网页之间可以互相包含,网页A中的链接可以指向网页B,同时网页B中的链接也可以指向网页A。凶此,网贞的搜索深度必须作一定的限制,不能无限制的递!厂j搜索:其次网贞的搜索方式也有茏别,有些爬虫采用广度优先策略(BFS),台些采用了深度优先策略(DFS)t21,考虑到实现时采用多线程,且所设计的Crawler需在搜索的深度上作了限制,所以采用深度搜索的方式。对于搜集所有url链接,可以有不同的方式,本文采用的正则本节介绍WebCrawler的设计,包括类的设计和时序图的设计。本文所实现的WebCrawler采用MVC的设计方式,前台设计成Web贞面,发送Web请求;后台Servlet接受前台发送过来的请求。在后台,有如一FJL,部分的内容:描述数据实现的ICrawlerModel接U及其实现;表示多线程搜索的ICrawler接U、AbstractCrawler和MultipleThreadCrawler类;工具类IParser接u和HtmlParser类;表示链接的数据结构Link和LmkDepth类;以及存储结果的DbAccess类。上述2取。对于标签的获取采用两种方式,一种是采用HtmlParser包来获取,另外一种提取文本的方式也可以使用正则表达式15】,在构造合适的正则表达式时,需要考虑到标签的特殊结构,为了提高文字的抽取效率,可以对一段html源码茸先过滤掉一些不需要的标签。采用HtmIPal"Ser包除了能够获得网页的内容外,该包还能提供一系列的获取网页内容的工具类,获取特定标签,并通过标签筛选规则的运用,获取包含有文字的标签,提取出其中的文字作为摘要;对于标题通过获取<rifle>标签,获得网页的标题。WebCralwer的设计作者简介:姜梦稚(1980.),男,上海电机学院电子信息学院,讲师,主要研究方向:形式化技术及其应用、软件开发技术及其应用,上海200240·21·万方数据MicrocompurerApplications"CoL26,No.7’2010研究与设计微型电脑应用2010年第26卷第7期类的实现都是采用Java,数据库使用MySQL,除此以外还要用TomcatWeb服务器,如图l所示。前台的设计使用jsp+jQuery的方式,jQuery是一种javascript工具包,提供对ajax的支持,能够实现无刷新的页面布局。Ajax是目前一种流行的设计网页的方式。后台采用Servlet运行方式,获取前台通过ajax方式提交的参数,根据不同的选择(可能是关键词的搜索,也可能是某一个网址的搜索)进行处理。图1WebCrawl盯的类i圉t.1MultipleThreadCrawler实现了抽象类AbstractCrawler,它是Crawler实现的核心内容,主要对每一次的搜索数据的处理,多线程的协调等。在该类中实现两个私有类Worm和TextExtractor,前者实现对网页链接的搜索,并填充入Model中的toVisitUrls数据结构中,后者则是对当前搜索的网贞提取标题和摘要信息。MaxDepthModel是一个存储数据的类,其包括已经访问过的Url和未访问过的Url,并且提供向数据结构中填充未访问的Url。采用接u的方式,也是为了能够在今后扩展具体实现。HmalParser提供了对文本解析的方法,图2给出的用户提交待搜索的嗍站的时序图:率(采用Java包匹配往往比较复杂)。同时在抽取hmal文本的文字信息时,也使用了这种技术,由于正则表达式表述的灵活性,并没有一种能够适合所有情况的匹配表达式,只有在实践过程中不断改进和优化。4结束语本文总结了、ⅣebCrawler在设计和实现过程中遇到的问题,并结合软件设计模式,给出一种WebCrawler可行的软件结构,并实现榆索,存储,显示等一系列问题,所给出的解决方法有一定的通用性,软件的框架能够根据实际的需要进行改写,可以在对当前已有得搜索引擎的搜索结果进行优化。WebCrawler是一个需要不断优化和改进的工具,其设计和实现可以采用多种方式,也可以根据Crawler的实际需要来设计。参考文献【11【2】【3】图2时序图旧宋晖,张岭,叶允明.基于标记树对象抽取技术的HiddenWeb获取研究啊.计算机工程与应用2002(23).赫枫龄.用有向图法解决网页爬行中循环链接问题明.吉林大学学报,2004.3.陈昊鹏,饶若楠.Java编程思想,第3版【l咽.机械工业出版社,2005.5.3WebCrawler的实现本文设计的w.ebCrawler采用Java语言和MySql来实【4】DerrickOswald等HtmlParser参考文档,httr':/ihlmlparser.sourceforge.net.fOL].f5】史寿伟.正则表达式参考文档,http://www.regexlab.corn/zh/regrefihtm【OL].【6】MartinFowlerUML精粹:标准对象建模语言简明指南IM].2006.3.(收稿日期:2010-03-19)·22·现,作为开源工具的组合,被心用在很多重要的领域。除了前述提到的实现细节外,在获取html文本中的叫链接时使用了正则表达式,可以提高文字的匹配速率和程序的运行效万方数据基于Java的多线程网络爬虫设计与实现

作者:作者单位:刊名:英文刊名:年,卷(期):被引用次数:

姜梦稚

上海电机学院电子信息学院,上海,200240微型电脑应用

MICROCOMPUTER APPLICATIONS2010,26(7)0次

1.宋晖,张岭,叶允明.基于标记树对象抽取技术的 Hidden Web获取研究[J].计算机工程与应用,2002(23).2.赫枫龄.用有向图法解决网页爬行中循环链接问题[J].吉林大学学报,2004.3.3.陈昊鹏,饶若楠.Java编程思想,第3版[M].机械工业出版社,2005.5.

4.Derrick Oswald 等 HtmlParser参考文档,http://htmlparser.sourceforge.net.[OL].5.史寿伟.正则表达式参考文档,http://www.regexlab.com/zh/regref.htm[OL].6.Martin Fowler UML 精粹:标准对象建模语言简明指南[M].2006.3.

本文链接:http://d.g.wanfangdata.com.cn/Periodical_wxdnyy201007007.aspx

授权使用:太原理工大学(tylgIP),授权号:283ed893-81a4-4d16-95dc-9e21015abab1

下载时间:2010年11月1日

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- efsc.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务