多线程网页抓取程序分析改进.docVIP

  • 16
  • 0
  • 约1.83万字
  • 约 20页
  • 2016-04-06 发布于安徽
  • 举报
多线程网页抓取程序分析改进.doc

一、GetWeb类源代码分析 通过对程序代码分析,绘制程序执行流程概要如下: 详细功能流程图如下(为了便于理解程序执行过程,流程图中的变量标识与源代码中的变量名并不对应): 详细功能流程图中变量标识与源代码中变量名的对应关系: 流程图中的变量 源程序中的变量 数据类型(java) 描述 startURL strHomePage String 主页地址 unProcessURLs arrUrls ArrayListString 未处理URL集合 maxDeep webDepth int 最大爬虫深度 DxxxURL deepUrls中的value值 int 某URL的深度值 threadNum 创建抓取线程时的循环变量i int 循环变量i maxThread intThreadNum int 最大线程数 GetWeb类的主要字段和方法的功能概述 字段摘要 java.util.Hashtablejava.lang.String,java.lang.Integer allUrls 存储所有URL的编号 java.util.ArrayListjava.lang.String arrUrl 存储所有URL供建立索引 java.util.ArrayListjava.lang.String arrUrls 存储未处理的URL java.lang.String charset 字符集, 默认为GB2312 java.util.Hashtablejava.lang.String,java.lang.Integer deepUrls 存储URL的爬虫深度 java.lang.String fPath 储存网页文件的目录名, 默认为web int intThreadNum 最大线程数, 默认为10 int intWebIndex 网页文件对应下标, 从0开始 java.lang.String myDomain 主页地址中的域名 java.lang.String report 网页抓取报告 long startTime 抓取开始时刻 java.lang.String strHomePage 主页地址, 即起始URL int webDepth 爬虫深度, 默认为2 int webFailed 抓取失败的URL计数 int webSuccessed 抓取成功的URL计数 方法摘要 void addReport(java.lang.String s) 生成报告文件, 将内容s添加到报告文件中(多线程同步操作) void addWebFailed() 抓取失败URL计数(多线程同步操作) void addWebSuccessed() 抓取成功URL计数(多线程同步操作) java.lang.String getAUrl() 从未处理URL集合中取一个URL, 并将这个URL从未处理URL集合中删除(多线程同步操作) java.lang.String getDomain() 判断用户所提供URL是否为域名地址 java.lang.Integer getIntWebIndex() 生成一个新的网页文件下标(多线程同步操作) java.lang.String getUrl() 从所有URL集合中取一个URL, 并将这个URL从所有URL集合中删除(多线程同步操作) void getUrlByString(java.lang.String inputArgs, java.lang.String strUrl) 提取网页文本中的URL链接(解析新的网页,提取其中含有的链接信息) void getWebByHomePage() 由用户提供的域名站点开始,对所有链接页面进行抓取 void getWebByUrl(java.lang.String strUrl, java.lang.String charset, java.lang.String fileIndex) 抓取URL的网页文本并从中提取URL链接(对后续解析出的url进行抓取) 程序运行时,根据用户输入的主页地址和最大爬虫深度调用getWebByHomePage方法,首先将主页URL添加到arrUrl和allUrls队列中,为其分配初始编号0,并设置爬虫深度为1 ;然后调用getWebByUrl方法抓取主页内容,将其存入网页文件中,同时从抓回的网页文本中提取链接(使用getUrlByString方法)存入arrUrls队列和arrUrl队列中。同时在allUrls队列中为每个URL分配一个网页编号,在deepUrls中添加并设置每个URL的爬虫深度(父链接爬虫深度+1,这里为1+1=2)。 接下来,循环创建10个抓取线程开

文档评论(0)

1亿VIP精品文档

相关文档