作者简介:林海霞,石家庄法商职业信息科学系,硕十研究生,讲师,河北石家庄050091司海峰,石家庄法商职业信息科学系,讲师,河北石家庄050091张微微,石家庄法商职业信息科学系,硕上研究生,河北石家庄050091
?56?
万方数据
MicrocomputerAppllcationsVoL
25,No.2,2009
技术交流
微型电脑应用
2009年第25卷第2期
算法将设定一个参数d,d是网络爬虫在遇到与主题无关链接时所需爬行的最大深度。如果crawler在爬行深度d步以后仍然没有发现与丰题相关的页面,才将P1这个无关链接舍弃。但是如果crawler在经过12,l,,14,15,16,这几条路径的搜索后都能找到与主题相关的贞面,就说明pl这个链接蕴涌着很大的远期【旦l报价值。根据这种思想本文对Best.First算法做蕈新调整,目的是提高算法的“查令率”。算法利崩Java的多线程思想,采用并发机制,实现过程如下:算法实现:
务器对请求的响应,等待时间将是对每一个网页请求等待响应时间的累加。因此网络爬虫必须采用多线程技术来减少
等待的时洲41。
2_2数据库访问技术网络爬虫采用基于SQLServer数据库队列管理机制,必须要有相应的数据库访f'口J技术。Java为我们提供了访问数据库的接口JDBC(Java
Database
Connectivity)。JDBC的用途
是允许向数据库发送SOL语句,从而让你可以从指定的数据库中返回数据。在Java中,有四种类型的数据库驱动
程序可以使JDBC有效的访问数据库15I。
BF-BF(topic,mrtmg—urls){link_l2fetch1i1岖startiIlg—un)'
While(visited<MAX—PAGES){
doc=fetch(1inkj);score_rl=sire(topic,doe);if(socre_rl>r1)
3实现过程
3.1算法实现的关键类以及关键函数要实现该算法需要创建的关键类有:Crawler类、CrawlerInteralWorkl
oad类、CrawlerWork类、CrawlerDone类,CrawlerSQLWorkload类,主要接Lj有:CrawlerReportable接口,1workloadStorable接口。Crawler类实现了网络爬虫的基本功能,即多线程抓取网页,监视和处理网页,提取新链接等功能。除此之外,它还担当Crawler接口,并且由Crawler对象管理线程池。CrawlerWork类创建CrawlerWork对象,CrawlerWork对象要处理Crawler必须访问的URL,当CrawlerWork对象首次启动时,它将请求URL处理。CrawlerWork对象调_HjCrawler对象的getWorkload()方法,getWorkload0方法会返回一个待检查的新URL。如果没有等待的URL,getWorkload0方法将会等待新任务的f{j现。CrawlerDone类要精确地跟踪目前有多少个线程仍在运行。
{enqueuel(frontier,extract__links(doc),score_r1);}
else
.
{score_r2=link_score_r2(D,links);if(scorer2>r2)enqueue_l(frontier,extraetlinks(doc),score_r2);
else
enqueue_2(1inks);))
}
2实现的关键技术
2.12.1.1
CrawlerSQLWorkload类将
作业完成的结果存储在SQL数据库中。1workloadStorable接口帮助Crawler存入和取出队列中的嘲页。模块中的关键函数如下:
pubhcclass
Java技术Java语言的特点Java语言具有多线程性、简单性、面向对象、分布式、
解释性、强壮性、安全性、与平台无关性、可移植性等显著
Crawler