主题网络蜘蛛程设计及JAVA实现.docVIP

  • 3
  • 0
  • 约5.54千字
  • 约 10页
  • 2019-04-22 发布于江苏
  • 举报
主题网络蜘蛛程序设计及JAVA实现 祝庆荣 (华南理工大学计算科学与工程学院 广东 广州 510640) 一、实验目的 1、掌握spider/crawler的工作原理及实现方法; 2、熟悉网页抓取的整个流程及操作步骤; 3、掌握spider/crawler应用程序的编写、调试和运行; 4、掌握主题爬行,内容分析技术; 二、实验环境 1、操作系统平台:Microsoft Windows Vista Ultimate x86 2、系统配置: 处理器:Intel Celeron M processer 1.50GHz 内存:1280M 3、开发平台Java 版本信息: java version 1.5.0_11 Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_11-b03) Java HotSpot(TM) Client VM (build 1.5.0_11-b03, mixed mode, sharing) 4、开发工具:Source Inside Program Editing Information System version 3.50 5、帮助文档:JAVA中文API文档 三、实验要求 1、锁定某个主题抓取; 2、能够产生日志文本文件,格式为:时间戳(timestamp)、URL; 3、抓取某一URL时最多允许建立2个连接(注意:本地作网页解析的线程数则不限) 4、遵守文明蜘蛛规则:必须分析robots.txt文件和meta tag有无限制;一个线程抓完一个网页后要sleep 2秒钟; 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): 图1 图1 URL状态流程图 完成URL错误队列完成队列运行队列等待队列发现URL 完成URL 错误队列 完成队列 运行队列 等待队列 发现URL 以下(图2)是为本Spider程序设计的详细工作流程图: 取 取给定的主题URL,加入到训练队列中 是否训练队列中是否有URL 是 否 训练队列中是否有URL 得到主题词库及对应权重(分数) 得到主题词库及对应权重(分数) 把下载的所有训练文件分词统计 训练结束下载当前主题URL页面内容 训练结束 下载当前主题URL页面内容 分数计算公式如下 Wi,j=Avg(TFi)*(1/(log(nDoc/ni)+1/log(nDoc-1))) Avg(TFi):对词i取其在各文档中的TF值进行平均; nDoc:文档数目; ni:出现词i的文档个数; 将此新链接 将此新链接移入完成队列并继续 等待队列中是否有URL 初始化给定URL,加入到等待队列中 工作结束 取一个URL移入运行队列,下载页面 此网页含有其它链接吗 查看网页上的下一个链接 是否为指向WEB页面的链接 报告网页链接 报告其它类型链接 将此新链接加入到等待队列中 否 是 是 否 是 否 有META且Name=robots的标签吗? 否 读取META的Content值 是 Conte

文档评论(0)

1亿VIP精品文档

相关文档