2.需求分析
2.1.功能分析
本系统开发的总体任务是:
1、锁定某个主题抓取;
2、能够产生日志文本文件,格式为:时间戳(timestamp)、URL;
3、抓取某一URL时最多允许建立2个连接;
4、遵守文明蜘蛛规则:必须分析robots.txt文件和meta tag有无限制;一个线程抓完一个网页后要sleep 2秒钟;
5、能对HTML网页进行解析,提取出链接URL,能判别提取的URL是否已处理过,不重复解析已crawl过的网页;
6、能够对spider/crawler程序的一些基本参数进行设置,包括:抓取深度(depth)、种子URL等;
2.2. 性能分析
先进性:采用成熟的计算机软件技术,保障系统适应今后技术发展的需要
可靠性:有一个稳定可靠的系统是确保整个系统正常运行的关键。
安全性:整个系统不应由于操作失误,甚至恶意攻击而遭到破坏。
3.系统概设计
3.1.系统总体工作流程
图1 Spider详细工作流程
3.2.功能模块设计
(1)主题爬虫URL的处理流程
图2 URL状态流程图
(2)抓取算法
爬虫抓取过程中使用了五个队列,分别是等待队列,处理队列,错误队列,完成队列,抛弃队列。
等待队列:爬虫解析到的url先保存到等待队列中,在等待队列中的u rI按照特定的排序法则进行排序,等候爬虫的抓取。
运行队列:url正在被抓取时放进抓取队列,目的是防止url被同时多次抓取。
错误队列:在抓取过程中出错的urI保存到错误队列。
完成队列:一个url被爬虫完全抓取之后就将url放进完成队列。
爬虫的抓取算法如下:
(1)将初始页面url集合放进等待队列,分配每个url一个相关性消息值m,并给每个url同样的相关度值。
这个相对于后面将要计算到的值较大,初始页面会人为根据主题进行筛选,所以与主题的紧密度高。人为的给定一个高的相关度值优点有两个,首先,减少爬虫的计算量,这些种子站点不需要通过相关度的计算。其次,可以在等待队列中置于较靠前的位置,在以后的更新过程中,可以优先更新。
(2) 对等待队列中的url,先根据m值大小排序,再根据相关度的大小排序。
(3) 根据第二步排好序的等待队列,将排序最前的url拿出放进处理队列,爬虫开始抓取。
(4) 下载网页到本地磁盘,并建立索引,然后将url地址放进完成队列。
(5)利用解析器解析出网页中的链接与对应的链接文本,并计算链接地址的相关度值。
(6) 将第5步得到的相关度值与相关度阀值f进行比较,结果分为三种情况:
第一种情况是相关度值大于相关度阀值,且父网页的相关性消息m值等于初始值,则直接传递父网页的m 值给子网页。
第二种情况是相关度值大于相关度阀值,且父网页的相关性消息m 值小于初始值,则恢复m 值为初始值,传递m 值给子网页。
第三种情况是相关度值小于相关度阀值,则将父网页的m 值乘以遗传基因比例b传递子网页的(b值大于0小于1),子网页的相关性消息值是m*b。
(7) 将url,m值,相关度值放进等待队列,重复第二步。
(8) 算法结束。
4.系统实现
4.1. 实现工具
操作系统是winXP,JAVA程序的编写工具是eclipse-SDK-3.2.1-win32 面向主题的网络蜘蛛爬虫研究与设计+流程图(3):http://www.youerw.com/jisuanji/lunwen_492.html