面向主题的网络蜘蛛爬虫研究与设计+流程图(3)
时间:2016-11-28 21:27 来源:毕业论文 作者:毕业论文 点击:次
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 (责任编辑:qin) |