首页 > 技术文章 > 网络资源收集工具概要设计文档

newbe 2015-01-15 04:41 原文

1.引言

1.1编写目的

将之前会议中记录的设计要点进行总结和规划,供团队内开发者和测试人员进行代码编写与测试。

1.2项目背景

         软件名: 网络资源收集工具

本软件任务:为下一组元数据抽取和整理工具进行对接,为下一组提供其所需的各类海量数据。

2.任务概述

2.1目标

总的目标是编写一个更快捷,更稳定的爬虫软件,维护并改善学长的代码并在其基础上进行完善创新。

分开来讲有学长代码规范的编写,学长遗留BUG的修复,多个种子链接功能的添加,广告过滤功能的优化,暂停爬取功能的实现,关键词筛选功能的添加与完善,实时显示抓取过程的图表功能的增加,得到网页的热度排序TOP10的网页,问答页面的筛选与爬取功能的实现,问答页面的筛选与爬取功能的实现,pdf页面的筛选与爬取功能的实现,doc页面的筛选与爬取功能的实现,ppt页面的筛选与爬取功能的实现。

2.2运行环境

系统:WINDOWS XP,WINDOWS 7,WINDOWS 8

Java版本:需安装最新版本的JRE

数据库版本:在联网的环境下可以直接连接服务器的数据库,版本为SQL Server 数据库位置:表名:[yuanhang].[dbo].[fileinfo]

2.3需求概述

将35w+个符合条件的网页,问答,文章放入数据库,具体请参见需求文档。

2.4条件与限制

首先,大多数的站点具有排斥爬虫访问的机制,在一段时间内的同一IP的并发访问容易发生暂时拒绝本地客户端的连接导致的503错误。

其次,网络上可以进行爬取的pdf、ppt、doc文件大多不能符合要求,而与计算机领域紧密相关的pdf、ppt、doc又基本很多都需要注册用户并且具有足够的积分或者账户充值。

3.总体设计

3.1处理流程

         需求分析和文档编写                     

   阅读学长代码和学习相关知识   

         为学长代码编写代码规范             

         M1代码编写、复审与测试          

         ALPHA版本发布                                 

         总结上阶段经验教训                       

         M2代码编写、复审与回归测试 

         BETA产品发布

3.2总体结构和模块外部设计

Analysis.java

BarChart.java

ConnectServer.java

CraUi.java

DownLoadFile.java

DownloadQuiz.java

DownloadPdf.java

DownloadPPt.java

DownloadDoc.java

HistogramJPanel.java

HtmlParserTool.java

Keyword.java

LinkFilter.java

LinkQueue.java

Logo.java

MyCrawler.java

PieChart.java

Queue.java

RankUrl.java

State.java

Url.java

 

主要分五个模块:

UI模块

网页过滤模块

文件下载模块

数据库更新模块

数据分析模块

 

外部数据库元组数据项:

网页id

域名

文件存储路径

编码方式

网页类型

最后被爬到的时间

更新时间

关键词

标签

IP地址

3.3功能分配

 

 

Keyword模块

DownLoadFile模块

ConnectServer模块

DownloadQuiz模块

RankUrl模块

HistogramJPanel模块

PieChart模块

BarChart模块

过滤

 

 

 

 

 

 

下载文件

 

 

 

 

 

 

连接数据库

 

 

 

 

 

 

 

爬取问答页

 

 

 

 

 

 

 

热度排序

 

 

 

 

 

 

 

可视化

 

 

 

 

 

 

 

DownLoadPdf模块

DownLoadDoc模块

DownLoadPPt模块

 

HtmlParserTool模块

 

 

过滤

 

 

 

 

下载文件

 

 

 

 

 

连接数据库

 

 

 

 

 

爬取问答页

 

 

 

 

 

 

 

热度排序

 

 

 

 

 

 

 

 

可视化

 

 

 

 

 

 

4.接口设计

4.1用户接口

用户界面:

多种子网址输入框、关键词输入框、爬取页面数输入框、选择文件录入多种子网站复选框、已访问URL视图、实时动态展示图、进度条、开始爬取按钮、爬取问答页按钮、爬取pdf按钮、爬取doc按钮、爬取ppt按钮。

4.2内部接口

LinkFilter为DownLoadFile、DownloadQuiz、DownloadPdf、DownloadDoc、DownloadPPt和Keyword提供过滤器的接口

Url为DownLoadFile、DownloadQuiz、DownloadPdf、DownloadDoc、DownloadPPt和RankUrl提供网址相关属性接口

State为PieChart、HistogramJPanel和CraUi提供状态更新的接口

5.数据结构设计

5.1逻辑结构设计

1、Url:

数据项: 域名 oriUrl、IP地址 url、网页编号 urlNo、结果码 statusCode 、被别的文章引用的次数 hitNum 、对应文章的汉字编码 charSet 、文章摘要 abstractText 、作者 author 、文章的权重 weight 、文章的描述 description 、文章大小 fileSize 、最后修改时间 lastUpdateTime 、过期时间 timeToLive 、文章名称 title 、文章类型 type 、引用的链接 urlRefrences

2、RankUrl:

数据项: 域名 url 、网站类别 UrlKind 、网址热度排名集合 outUrls

3、Queue:

数据项: 将要访问的URL队列  queue

4、LinkQueue:

数据项: 已访问的url集合visitedUrl 、待访问的url集合unVisitedUrl 、seedurl集合seedUrls 、tag集合 tagtext 、Url得分表 urlsScoreTable

5、DownLoadFile:

数据项: 一级页面网址 myUrl 、过滤器 myFilter 、文件存储路径oripath 、存入数据库ID号 C_ID 、是否符合过滤条空间 flag

6、DownLoadPdf:

数据项: 一级页面网址 myUrl 、过滤器 myFilter 、文件存储路径oripath 、存入数据库ID号 C_ID

7、DownLoadDoc:

数据项: 一级页面网址 myUrl 、过滤器 myFilter 、文件存储路径oripath 、存入数据库ID号 C_ID

8、DownLoadPPt:

数据项: 一级页面网址 myUrl 、过滤器 myFilter 、文件存储路径oripath 、存入数据库ID号 C_ID

9、DownloadQuiz:

数据项: 一级页面网址 myUrl 、类别需求 PageKind  、文件存储路径oripath1~5 、存入数据库ID号 C_ID 、是否符合过滤条空间 flag

10、Keyword:

数据项: 关键词 keyword

11、ChartPanel:

数据项:参见JDK_API文档

12、HtmlParserTool

数据项: 解析器parser

5.2物理结构设计

1、Url:

数据项: 域名 oriUrl(String)、IP url(String)、网页编号 urlNo(int)、结果码 statusCode(int)、被别的文章引用的次数 hitNum(int)、对应文章的汉字编码 charSet(String)、文章摘要 abstractText(String)、作者 author(String)、文章的权重 weight(int)、文章的描述 description(String)、文章大小 fileSize(int)、最后修改时间 lastUpdateTime(Timestamp)、过期时间 timeToLive(Date)、文章名称 title(String)、文章类型 type(String)、引用的链接 urlRefrences(String[])

2、RankUrl:

数据项: 域名 url(String)、网站类别 UrlKind(int)、网址热度排名集合 outUrls(Set<RankUrl>)

3、Queue:

数据项: 将要访问的URL队列  queue(LinkedList<Object>)

4、LinkQueue:

数据项: 已访问的url集合visitedUrl(Set<RankUrl>)、待访问的url集合unVisitedUrl(ConcurrentLinkedQueue<RankUrl>)、seedurl集合seedUrls()、tag集合 tagtext()、Url得分表 urlsScoreTable()

5、DownLoadFile:

数据项: 一级页面网址 myUrl(RankUrl)、过滤器 myFilter(LinkFilter)、文件存储路径oripath(String)、存入数据库ID号 C_ID(int)、是否符合过滤条空间 flag(boolean)

6、DownLoadPdf:

数据项: 一级页面网址 myUrl(RankUrl)、过滤器 myFilter(LinkFilter)、文件存储路径oripath(String)、存入数据库ID号 C_ID(int)

7、DownLoadDoc:

数据项: 一级页面网址 myUrl(RankUrl)、过滤器 myFilter(LinkFilter)、文件存储路径oripath(String)、存入数据库ID号 C_ID(int)

8、DownLoadPPt:

数据项: 一级页面网址 myUrl(RankUrl)、过滤器 myFilter(LinkFilter)、文件存储路径oripath(String)、存入数据库ID号 C_ID(int)

9、DownloadQuiz:

数据项: 一级页面网址 myUrl(RankUrl)、类别需求 PageKind (int)、文件存储路径oripath1~5(String)、存入数据库ID号 C_ID(int)、是否符合过滤条空间 flag(boolean)

10、Keyword:

数据项: 关键词 keyword(String)

11、ChartPanel:

数据项:参见JDK_API文档

12、HtmlParserTool

数据项: 解析器parser(Parser)

 

外部数据库元组数据项:

网页id                                 int(11)

域名                                     nvarchar(max)

文件存储路径                   nvarchar(max)

编码方式                            nchar(10)

网页类型                            nchar(10)

最后被爬到的时间         datetime (25)

更新时间                            datetime (25)

关键词                                 text

标签                                     text

IP地址                                 nvarchar(max)

5.3数据结构与程序的关系

程序\数据结构

 

Url

RankUrl

Queue

LinkQueue

DownLoadFile

DownloadQuiz

Keyword

ChartPanel

RankUrl

 

 

 

 

 

 

LinkQueue

 

 

 

 

 

 

DownLoadFile

 

 

 

 

 

DownLoadQuiz

 

 

 

 

 

BarChart

 

 

 

 

 

 

 

PieChart

 

 

 

 

 

 

 

MyCrawler

 

 

 

 

 

 

 

DownLoadPdf

DownLoadDoc

DownLoadPPt

 

 

RankUrl

 

 

 

 

 

LinkQueue

 

 

 

 

 

 

 

 

DownLoadFile

 

 

 

 

 

 

 

 

DownLoadQuiz

 

 

 

 

 

 

 

 

BarChart

 

 

 

 

 

 

 

 

PieChart

 

 

 

 

 

 

 

 

MyCrawler

 

 

 

 

 

 

6.运行设计

6.1运行模块的组合

通用型爬取: RankUrl模块,DownLoadFile模块,ConnectServer模块,HistogramJPanel模块,PieChart模块,BarChart模块

聚集型爬取: Keyword模块,DownLoadFile模块,ConnectServer模块,HistogramJPanel模块,PieChart模块,HtmlParserTool模块

综合型爬取: Keyword模块,RankUrl模块,DownLoadFile模块,ConnectServer模块,HistogramJPanel模块,PieChart模块,HtmlParserTool模块

问答页爬取: DownloadQuiz模块,ConnectServer模块,HistogramJPanel模块,PieChart模块,HtmlParserTool模块

pdf爬取: DownloadPdf模块,ConnectServer模块,HistogramJPanel模块,PieChart模块,HtmlParserTool模块

doc爬取: DownloadDoc模块,ConnectServer模块,HistogramJPanel模块,PieChart模块,HtmlParserTool模块

ppt爬取: DownloadPPt模块,ConnectServer模块,HistogramJPanel模块,PieChart模块,HtmlParserTool模块

 

6.2运行控制

通用型爬取: 输入种子网址以及需要爬取网页数,将所需网页分类添加到数据库中。

聚集型爬取: 输入关键词以及需要爬取网页数,将所需网页分类添加到数据库中。

综合型爬取: 输入种子网址、关键词以及需要爬取网页数,将符合条件的所有网页分类添加到数据库中。

问答页爬取: 输入需要爬取网页数,选择需要爬取的问答页面种类,将符合条件的所有问答页添加到数据库中。

pdf爬取: 选择种子txt,将符合条件的所有问答页添加到数据库中

doc页爬取: 选择种子txt,将符合条件的所有问答页添加到数据库中

ppt页爬取: 选择种子txt,将符合条件的所有问答页添加到数据库中

6.3运行时间

通用型爬取:

 

DownLoadFile模块

ConnectServer模块

RankUrl模块

HistogramJPanel模块

HtmlParserTool模块

PieChart模块

BarChart模块

时间

55%

10%

5%

10%

5%

2%

3%

 

聚集型爬取:

 

DownLoadFile模块

ConnectServer模块

RankUrl模块

HistogramJPanel模块

PieChart模块

HtmlParserTool模块

时间

70%

10%

3%

10%

2%

5%

 

综合型爬取:

 

Keyword模块

DownLoadFile模块

ConnectServer模块

RankUrl模块

HistogramJPanel模块

PieChart模块

HtmlParserTool模块

时间

5%

65%

10%

5%

10%

2%

3%


问答页爬取:

 

ConnectServer模块

DownloadQuiz模块

HistogramJPanel模块

PieChart模块

HtmlParserTool模块

时间

10%

75%

10%

2%

3%

 

pdf爬取:

 

ConnectServer模块

DownloadPdf模块

HistogramJPanel模块

PieChart模块

HtmlParserTool模块

时间

10%

75%

10%

2%

3%

 

doc爬取:

 

ConnectServer模块

DownloadDoc模块

HistogramJPanel模块

PieChart模块

HtmlParserTool模块

时间

10%

75%

10%

2%

3%

 

ppt爬取:

 

ConnectServer模块

DownloadPPt模块

HistogramJPanel模块

PieChart模块

HtmlParserTool模块

时间

10%

75%

10%

2%

3%

推荐阅读