标签:
将之前会议中记录的设计要点进行总结和规划,供团队内开发者和测试人员进行代码编写与测试。
软件名: 网络资源收集工具
本软件任务:为下一组元数据抽取和整理工具进行对接,为下一组提供其所需的各类海量数据。
总的目标是编写一个更快捷,更稳定的爬虫软件,维护并改善学长的代码并在其基础上进行完善创新。
分开来讲有学长代码规范的编写,学长遗留BUG的修复,多个种子链接功能的添加,广告过滤功能的优化,暂停爬取功能的实现,关键词筛选功能的添加与完善,实时显示抓取过程的图表功能的增加,得到网页的热度排序TOP10的网页,问答页面的筛选与爬取功能的实现,问答页面的筛选与爬取功能的实现,pdf页面的筛选与爬取功能的实现,doc页面的筛选与爬取功能的实现,ppt页面的筛选与爬取功能的实现。
系统:WINDOWS XP,WINDOWS 7,WINDOWS 8
Java版本:需安装最新版本的JRE
数据库版本:在联网的环境下可以直接连接服务器的数据库,版本为SQL Server 数据库位置:表名:[yuanhang].[dbo].[fileinfo]
将35w+个符合条件的网页,问答,文章放入数据库,具体请参见需求文档。
首先,大多数的站点具有排斥爬虫访问的机制,在一段时间内的同一IP的并发访问容易发生暂时拒绝本地客户端的连接导致的503错误。
其次,网络上可以进行爬取的pdf、ppt、doc文件大多不能符合要求,而与计算机领域紧密相关的pdf、ppt、doc又基本很多都需要注册用户并且具有足够的积分或者账户充值。
需求分析和文档编写
阅读学长代码和学习相关知识
为学长代码编写代码规范
M1代码编写、复审与测试
ALPHA版本发布
总结上阶段经验教训
M2代码编写、复审与回归测试
BETA产品发布
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地址
|
Keyword模块 |
DownLoadFile模块 |
ConnectServer模块 |
DownloadQuiz模块 |
RankUrl模块 |
HistogramJPanel模块 |
PieChart模块 |
BarChart模块 |
过滤 |
√ |
|
|
√ |
|
|
|
|
下载文件 |
|
√ |
|
√ |
|
|
|
|
连接数据库 |
|
|
√ |
|
|
|
|
|
爬取问答页 |
|
|
|
√ |
|
|
|
|
热度排序 |
|
|
|
|
√ |
|
|
|
可视化 |
|
|
|
|
|
√ |
√ |
√ |
|
|
DownLoadPdf模块 |
DownLoadDoc模块 |
DownLoadPPt模块 |
|
HtmlParserTool模块 |
|
|
过滤 |
|
√ |
√ |
√ |
|
√ |
|
|
下载文件 |
|
√ |
√ |
√ |
|
|
|
|
连接数据库 |
|
√ |
√ |
√ |
|
|
|
|
爬取问答页 |
|
|
|
|
|
√ |
|
|
热度排序 |
|
|
|
|
|
|
|
|
可视化 |
|
√ |
√ |
√ |
|
|
|
|
用户界面:
多种子网址输入框、关键词输入框、爬取页面数输入框、选择文件录入多种子网站复选框、已访问URL视图、实时动态展示图、进度条、开始爬取按钮、爬取问答页按钮、爬取pdf按钮、爬取doc按钮、爬取ppt按钮。
LinkFilter为DownLoadFile、DownloadQuiz、DownloadPdf、DownloadDoc、DownloadPPt和Keyword提供过滤器的接口
Url为DownLoadFile、DownloadQuiz、DownloadPdf、DownloadDoc、DownloadPPt和RankUrl提供网址相关属性接口
State为PieChart、HistogramJPanel和CraUi提供状态更新的接口
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
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)
程序\数据结构
|
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 |
|
|
|
√ |
√ |
√ |
|
|
通用型爬取: 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模块
通用型爬取: 输入种子网址以及需要爬取网页数,将所需网页分类添加到数据库中。
聚集型爬取: 输入关键词以及需要爬取网页数,将所需网页分类添加到数据库中。
综合型爬取: 输入种子网址、关键词以及需要爬取网页数,将符合条件的所有网页分类添加到数据库中。
问答页爬取: 输入需要爬取网页数,选择需要爬取的问答页面种类,将符合条件的所有问答页添加到数据库中。
pdf爬取: 选择种子txt,将符合条件的所有问答页添加到数据库中
doc页爬取: 选择种子txt,将符合条件的所有问答页添加到数据库中
ppt页爬取: 选择种子txt,将符合条件的所有问答页添加到数据库中
通用型爬取:
|
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% |
标签:
原文地址:http://www.cnblogs.com/newbe/p/4189834.html