蜘蛛JAVA.docx
- 文档编号:8477398
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:11
- 大小:451.80KB
蜘蛛JAVA.docx
《蜘蛛JAVA.docx》由会员分享,可在线阅读,更多相关《蜘蛛JAVA.docx(11页珍藏版)》请在冰豆网上搜索。
蜘蛛JAVA
主题网络蜘蛛程序设计及JAVA实现
祝庆荣
(华南理工大学计算科学与工程学院广东广州510640)
一、实验目的
1、掌握spider/crawler的工作原理及实现方法;
2、熟悉网页抓取的整个流程及操作步骤;
3、掌握spider/crawler应用程序的编写、调试和运行;
4、掌握主题爬行,内容分析技术;
二、实验环境
1、操作系统平台:
MicrosoftWindowsVistaUltimatex86
2、系统配置:
处理器:
IntelCeleronMprocesser1.50GHz
内存:
1280M
3、开发平台Java版本信息:
javaversion"1.5.0_11"
Java(TM)2RuntimeEnvironment,StandardEdition(build1.5.0_11-b03)
JavaHotSpot(TM)ClientVM(build1.5.0_11-b03,mixedmode,sharing)
4、开发工具:
SourceInsideProgramEditing&InformationSystemversion3.50
5、帮助文档:
JAVA中文API文档
三、实验要求
1、锁定某个主题抓取;
2、能够产生日志文本文件,格式为:
时间戳(timestamp)、URL;
3、抓取某一URL时最多允许建立2个连接(注意:
本地作网页解析的线程数则不限)
4、遵守文明蜘蛛规则:
必须分析robots.txt文件和metatag有无限制;一个线程抓完一个网页后要sleep2秒钟;
5、能对HTML网页进行解析,提取出链接URL,能判别提取的URL是否已处理过,不重复解析已crawl过的网页;
6、能够对spider/crawler程序的一些基本参数进行设置,包括:
抓取深度(depth)、种子URL等;
7、使用User-agent向服务器表明自己的身份;
8、产生抓取统计信息:
包括抓取速度、抓取完成所需时间、抓取网页总数;重要变量和所有类、方法加注释;
9、请遵守编程规范,如类、方法、文件等的命名规范,
10、可选:
GUI图形用户界面、web界面,通过界面管理spider/crawler,包括启停、URL增删等
四、设计思路及总体框架
从设计思路上,构造Spider有两种比较常用的方法。
第一种是把Spider设计成一个递归的程序,第二种是编写一个非递归的Spider程序,程序维护一个要访问的网页列表,考虑到Java对数组、队列的包支持较为丰富,实现相对容易,本程序使用了第二种设计思路。
程序中总共维护了四个不同的队列,它们的总结如下。
每一个这样的队列保存着同一处理状态的URL。
等待队列当Spider程序开始处理URL时,它们被传送到这一队列。
重要的是同一个URL不能被多次处理,因为这样是浪费的。
当一个URL被处理过后,它被移送到或者是错误队列或者是完成队列。
运行队列当前正在处理的URL队列。
错误队列如果在下载当前网页时发生错误,它的URL将被加入到错误队列。
该URL到达这一队列后将不再移入其它队列。
一旦网页移入错误队列,Spider程序将不会再对它作进一步处理。
完成队列如果在下载网页时没有发生错误,该URL将被加入到完成队列。
该URL到达这一队列后将不再移入其他队列。
明显,每个得到的URL都只能存在于一个队列中。
其状态流程图如下(图1):
图1URL状态流程图
以下(图2)是为本Spider程序设计的详细工作流程图:
是
否
分数计算公式如下
Wi,j=Avg(TFi)*(1/(log(nDoc/ni)+1/log(nDoc-1)))
Avg(TFi):
对词i取其在各文档中的TF值进行平均;
nDoc:
文档数目;
ni:
出现词i的文档个数;
图2Spider详细工作流程
五、程序结构及具体实现
程序由四个文件组成:
CheckLinks.java;HTMLParse.java;ISpiderReportable.java;Spider.java,程序工程报告如下:
Projectcontains158symbolrecords,780indexentries,and6files.
FileSizeObjDate
------------------------------------------------------------------------------
CheckLinks.java9397-2007/5/30
CheckLinks8
java_awt0
java_io3
java_net2
javax_swing1
HTMLParse.java172-2007/4/20
HTMLParse2
javax_swing_text_html0
ISpiderReportable.java195-2007/4/20
ISpiderReportable2
java_net0
Segmenter.java31413-2007/5/29
java_io1
java_lang0
java_lang_Math3
java_util2
segmenter10
Spider.java17391-2007/5/31
java_io2
java_net1
java_util0
javax_swing_text3
javax_swing_text_html4
Spider12
Tf.java58-2007/5/19
tf2
TotalFiles:
6
TotalBytes:
58626
TotalSymbols:
21
它们结构之前的关系如下各图:
实现的流程如下,首先,CheckLinks得到一个起始的URL,在CheckLinks.run()中,新建Spider实例,把起始URL加入到等待队列中,并通过setKeyWord()方法设置主题词,setCheckRobots()、setCheckMetaTag()配置选项,程序进入正常工作。
Spider通过getWorkloadWaiting()方法得到等待队列中的URL,调用processURL()方法对取出的URL进行处理,对此,processURL()方法内以URL为地址建立链接,取回对象通过parse.parse()方法对HTML进行解释,主要是从得到的HTML中获取新的URL并添加到等待队列中,及对主题字的匹配。
经过parse返回,则从等待队列中移走处理的URL,如果没有错误,把它添加到完成队列中,否则添加到错误队列中,程序又去等待队列中取出URL,进行同样的处理流程,循环一直到等待队列为空。
六、实验结果分析
实验结果分析:
包括性能分析如抓取速度(网页数/秒)、整个网站抓取总时间、站内总共抓取的网页个数、站外总共抓取的网页个数等,最好图表说明;
运行界面如下图(图2)所示:
图3Spider运行界面
以为起点,取以下几个站点作为训练站点(均为财经内容网页):
抓取结果如下
详见日志文件。
由日志文件可见,这些不相关的页面的得分大多非常低,最高的也不超过25分。
同样,再以
日志文件说明 :
spiderEvents.log为所有事件日志;
spiderResults.log为网页评分结果。
七、存在问题
爬行速度太慢,别是对超链接较多的页面;页面内容的多少对评分有一定影响,虽然不大,但仍需考虑;若能在网页架构分析上添加一定的过滤,抓取核心内容,相信对抓取质量会有更大的提高,这方面也待改善。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 蜘蛛 JAVA