网络爬虫系统详细设计说明书V021.doc

上传人:b**** 文档编号:18434553 上传时间:2023-08-17 格式:DOC 页数:77 大小:2.12MB
下载 相关 举报
网络爬虫系统详细设计说明书V021.doc_第1页
第1页 / 共77页
网络爬虫系统详细设计说明书V021.doc_第2页
第2页 / 共77页
网络爬虫系统详细设计说明书V021.doc_第3页
第3页 / 共77页
网络爬虫系统详细设计说明书V021.doc_第4页
第4页 / 共77页
网络爬虫系统详细设计说明书V021.doc_第5页
第5页 / 共77页
网络爬虫系统详细设计说明书V021.doc_第6页
第6页 / 共77页
网络爬虫系统详细设计说明书V021.doc_第7页
第7页 / 共77页
网络爬虫系统详细设计说明书V021.doc_第8页
第8页 / 共77页
网络爬虫系统详细设计说明书V021.doc_第9页
第9页 / 共77页
网络爬虫系统详细设计说明书V021.doc_第10页
第10页 / 共77页
网络爬虫系统详细设计说明书V021.doc_第11页
第11页 / 共77页
网络爬虫系统详细设计说明书V021.doc_第12页
第12页 / 共77页
网络爬虫系统详细设计说明书V021.doc_第13页
第13页 / 共77页
网络爬虫系统详细设计说明书V021.doc_第14页
第14页 / 共77页
网络爬虫系统详细设计说明书V021.doc_第15页
第15页 / 共77页
网络爬虫系统详细设计说明书V021.doc_第16页
第16页 / 共77页
网络爬虫系统详细设计说明书V021.doc_第17页
第17页 / 共77页
网络爬虫系统详细设计说明书V021.doc_第18页
第18页 / 共77页
网络爬虫系统详细设计说明书V021.doc_第19页
第19页 / 共77页
网络爬虫系统详细设计说明书V021.doc_第20页
第20页 / 共77页
亲,该文档总共77页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

网络爬虫系统详细设计说明书V021.doc

《网络爬虫系统详细设计说明书V021.doc》由会员分享,可在线阅读,更多相关《网络爬虫系统详细设计说明书V021.doc(77页珍藏版)》请在冰点文库上搜索。

网络爬虫系统详细设计说明书V021.doc

网络爬虫系统

详细设计说明书

用户单位:

承建单位:

广州星博信息技术有限公司

修订记录

版本

日期

修订标记

修订者

说明

V0.1

2010-7-23

A

陈跃群

草拟

V0.2

2010-8-3

M

陈跃群

添加“模块关系图”,“模块描述”,修改部分类图,修改序列图

V0.2.1

2010-8-3

M

陈跃群

修改“common模块时序图”,修改部分编号

注:

A-添加,M-修改,D-删除,C-审核

目录

第1章弓I言 4

1.■ 4

2.参考測 4

第2章系统概述 5

2.模块关系图 5

2.1.1网页分类子系统 5

2.1.2二级域名子系统 8

第3章 COMMON模块 10

8.1模块描述 10

8.2模块类图 10

8.3模块序列图 11

8.4重要类和接口描述 12

第4章生成种子子系统 15

4.模块描述 15

4.模块类图 16

4.模块序列图 17

4.重要类和接口描述 18

第5章网页数据采集子系统 21

1.1Http访问组件模块 21

5.1.1模块描述 21

5.1.2模块类图 22

5.1.3模块序列图 23

5.1.4重要类和接口描述 23

1.2网页采集URLs/ContentType过滤器、分类器模块 26

5.2.1模块描述 26

5.2.2模块类图 27

5.2.3模块序列图 27

5.2.4重要类和接口描述 28

1.3网页采集DB接口模块 32

5.3.1模块描述 32

5.3.2模块类图 32

5.3.3模块序列图 33

5.3.4重要类和接口描述 33

1.4链接抽取逻辑模块 34

5.4.1网页数据生成子模块 34

5.4.2网页链接抽取子模块 37

5.4.3网页链接过滤子模块 40

第6章预处理子系统 44

1.分词模块并建立正向索引模块 44

6.1.1模块描述 44

6.1.2模块类图 45

6.1.3模块序列图 46

6.1.4重要类和接口描述 46

第7章归类子系统 49

训练分类器模块 49

7.1.1模块描述 49

7.1.2模块类图 49

7.1.3模块序歹ij阁 50

7.1.4重要类和接口描述 50

分类模块 52

7.2.1模块描述 52

7.2.2模块类图 53

7.2.3模块序列图 54

7.2.4重要类和接口描述 55

第8章导出子系统 59

1.导出到规则库 59

8.1.1业务类型导出到规则库 59

8.1.2归类列表导出到规则库 59

第9章二级域$酮页釆集 60

1.二级域名Http访问模块 60

9.1.1模块描述 60

9.1.2模块类图 61

9.1.3模块序列图 62

9.1.4重要类和接口描述 62

第10章二级域名预处理 65

10.1二级域名建立正向索引 65

10.1.1模块描述 65

10.1.2模块类图 65

10.1.3模块序列图 66

10.1.4重要类和接口描述 66

第1章引言

1.1目的

本说明书的编写目的是为丫向用户单位、承建单位的相关人员说明系统总体设计的技术方案,从程序系统的设计角度出发,考虑系统中的整体架构、处理流程、模块划分、功能分配、接口设计、运行环境、数据结构设计和出错处理设计等内容,以向整个设计期提供关于程序系统的逻辑和数据功能实现方式的总体描述,从而作为程序详细设计或编码的基础。

设计阶段将以本文档为核心文档。

本概要设计说明书的适用读者为:

客户代表、业务分析人员、系统架构师、系统开发人员、测试人员。

7.2.1参考资料

序号

文档名称

版本/曰期

1

网络爬虫概要设计说明书

广州星博

V0.4

第2章系统概述

系统主要是实现对网络中的某个或某几个入口链接进行数据的采集,并按照主题对所采集的URL进行索引及归类,与移动GPRS/TD用户所访问URL进行匹配,从而发掘用户的潜在需求,以及供用户按照关键字检索网络媒体介质和匹配URLs的主题分类等功能。

(具体见“网络爬虫概要没计说明书”)

模块关系图

1.网页分类子系统

爬虫的一个任务是把(十大)门户网站中的二级目录归类到各个相应主题下面。

把H录划分到对应的主题的过程,在爬虫系统中称为网页分类的过程。

网页分类的过程分为“种子文件生成”、“网页采集”、“预处理”、“分类”等模块,公共模块(common模块)是主线程相关的模块。

网页分类子系统各个模块之间的联系如下图(图2-1)所示。

>common模块:

common模块主要是主线程管理各个业务线程实例的产生、启动、停止、监视等功能;

>种子生成模块:

为网页分类服务的种子生成模块读入了既定格式的种子文件,把读到的种子格式化后持久化;该模块和网贞采集子系统的接门即为数据库中的链接种子表;

>网页采集模块:

网页采集主要是通过WAP/网络,把种子库里的链接内容爬取下来,并把内容持久化,以便供预处理处理;该模块还有一个任务,就是从爬取到的内容中抽取出链接,放到链接种子库中,以便二次采集;该模块和种子生成模块的数据接门是链接种子表,和T一个预处理模块的接UI是封装的链接内容(SeedContent)表;

>预处理模块:

预处理模块是把采集到的网页内容“分词”、“计算权重”、“建立索引”的过程;它和网页采集的交互是接受网页采集封装的网页链接内容(SeedContent);它和分类模块的接口是为分类模块提供计算了特征向量的“文档”库;

分类模块:

分类是实现网页分类系统的最后也是最重要的一个模块。

分类模块分为“训练样本集”、“链接内容分类”和“二级目录划分”等子模块;大体过程是把需要划分主题的网页内容的文档(下称当前文档)和经过训练的样例文档比较,找出当前文档和样例文档中最相似的一份,把找到的这份样例文档的主题类型作为当前文档的主题类型,形成归类类表;形成归类列表后,切分URL中的FI录,分类分级计算目录百分比(此内容请参考《网络爬虫概要设计说明书》之3.4.4)。

该模块需要的数据是人工维护的“类别库”和未经过训练“样例文档集”,预处理产生的“文档库”;中间产生的数据主要是经过训练的“样例文档集”,最后产生的数据是分好主题类别的目录链接库(CatalogLink)。

/ 网贞分类

模块交互阁

种子文件

mtessm

类别

徒接属性分类

种子

过滤链接域性

卜载链接

M頁采觀

生成网页

数据

抽取链接

过滤链接

种子

持久化链接内祚

动令

手命

X

主线程

封装的链接内容

(SeedContent)

稃制U线拉接

读取SeedContent

分词

计锌词项权重

葑装的链接内容7

数据库接口

模块

文档库

查吞线程状态

类別庠

样例文档炸

训练样例文

分类

I

链接内容(

分炎U的链接内容,

(ClassifiedContent)

I/

控制

接门

计算二级目录分类酉分比

持久化

禅例文档

模块

数据痄接u

训练后的文挡

目录链接库

(TrainingContent)

(CatalogLink)

(图2-1)网页分类子系统描述图

2.二级域名子系统

爬虫的另一个任务是给嗅探数据中用户访问的部分二级域名打上标题。

该过程在爬虫中称为“二级域名子系统”。

二级域名子系统分为“种子生成模块”、“二级域名Http访问模块”和“二级域名建立正向索引”等业务模块,同时也会受

common模块管理。

二级域名子系统各个模块之间的联系如下图(图2-2)所示。

>种子生成模块:

该模块和网页分类子系统的种子生成模块基木一样;它从嗅探下来的数据库中根据既定的规则筛选出部分二级域名,格式化后存入数据库中,作为种子;该模块和二级域名Http访问模块的接口是链接种子表;

>二级域名Http访问模块:

本模块是爬去种子链接的内容,并把内容持久化的过程;它和种子生成模块的交互数据是链接种子库,和二级域名建立正向索引的接口是二级域名链接内容(DomianContent)表;

>二级域名建立正向索引:

本模块是给二级域名链接内容抽取标题并持久化的过程。

它和二级域名Http访问模块的接门是二级域名链接内容(DomianContent)表,最终抽取的标题也更新到DomainContent中去。

:

级域名子系统

模块交互图

启动

停止

齊肴线栉数

嗅探数损

查狞线程状态

种子队列

\z

二级域名链接内容(DomainContent)

(图2-2)二级域名子系统描述图

第3章common模块

3.1模块描述

本模块管理着爬虫系统的所有业务活动的线程,实现业务活动线程的启动、停止、状态监控等功能;

>输入:

1.配置文件关于各类业务线程相关信息(包括线程数,线程睡眠时间等);

2.用户控制台的命令输入;

>输出:

2.2.1.各类业务线程的牛.命活动控制结果;

2.2.2.线程状态监控报告;

>活动时机:

1.

爬虫程序启动时;

2.

用户输入命令时;

3.

业务线程活动异常时(待扩展);

3.2 模块类图

ThreadManager

OtileSeedFormaterThreadList:

List

^dbSeedScannerThreadList:

List

K^DiderThreadLisf:

List

dinkExtractorThreadList:

List

^segmentationThreadList:

List

O^agelndexerThfeadList:

List

函rainerThreadList:

List

List

^cataloqCounterThreadList:

Lis貧

^domainSpiderThreadList:

ListOfileSeedFormaterRunnerList:

List

List

tfspiderRunnerList:

List

List

;egmentationRunnerList:

Lis言

agehdexerRunnerList:

List

BrainerRunnerList:

ListgcontentClassifierRui^rList:

List

List

sXJomainSpiderRunnerList:

List

InstanceManager

SnstanceCreate(className:

String):

voidinstanceRemove(className:

String):

booleanStopAII(className:

String):

boolean

InstanceRemover

^InstanceRemoverO

o

Runnable

(fromLogicalView)

*run()

InstanceCreator

NnstanceCreator()

InstanceAIIRemover

NnstanceAIIRemoverO

Thread

主线松

(fromUseCast..)

3.3 模块序列

:

Thread

InstanceAIIRemover

InstanceMa门aqer

1.

InstanceAIIRemover(String)

2.run()

2.1.new

2.2.stopAII(String)

L—

3.4 重要类和接口描述

1.主线程

说明

功能描述

主线程组织管理业务线程的类。

通过监视控制台输入的命令,控制业务线程的活动;

主要方法描述

1.mn:

按照一定的策略生成各类业务线程,然后等待用户控制台的输入,通过命令管理业务线程的生命活动;

涉及数据

备注

1.InstanceManager

说明

功能描述

InstanceManager线程实例管理类,负责新增线程实例和删去线程实例;

主要方法描述

1.instanceCreate:

根据参数指定的类名称,实例化并把实例引用放入runnerList和threadList列表中;

2.instanceRemove:

根据参数指定的类名,停止该类的一条线程,并从runnerList和threadList删去;该方法先调用IRunner接门的stop方法,然后睡眠预定的时间,然后通过IRunner接U的isEnd()方法检测线程时候正常结束,如果未正常结束则调用Thread的stop方

法结束线程,最后从runnerList和threadList列表中删除实例引用;

3.stopAll:

根椐参数指定的类名,停止该类的所有线程,并从runnerList和threadList删去;其过程类似于instanceKemove,不同的是本方法停止并删除所有实例;

涉及数据

1.className:

参数指定的线程类名;

2.runnerList:

IRunner接口的列表;

3.threadList:

Thread列表;

备注

各个方法都应该先锁定runnerList,再锁定threadList,一定要按照这个顺序加锁,防止线程死锁;

2.InstanceCreator

说明

功能描述

InstanceCreator为指定的业务线程类增加新线程实例;

主要方法描述

InstanceCreator:

构造方法屮参数为线程类的类名;

run:

线程接口方法,调用丨nstanceManager的instanceCreate方法生成新线程;

涉及数据

className:

参数指定的线程类名;

runnerList:

IRunner接口的列表;

threadList:

Thread列表;

备注

3.InstanceRemover

说明

功能描述

InstanceRemover停止指定的线程类的一条线程;

主要方法描述

InstanceRemover:

扫描目录,读取种子文件内容;

run:

线程接口方法,调用InstanceManager的instanceReraove方法除去一条线程实例;

涉及数据

className:

参数指定的线程类名;

runnerList:

1Runner接口的列表;

threadList:

Thread列表;

备注

4.InstanceAIIRemover

说明

功能描述

InstanceAIIRemover停止指定的线程类的所有线程;

主要方法描述

1.InstanceAIIRemover:

扫描目录,读取种子文件内容;

2.run:

线程接口方法,调用丨nstanceManager的instanceRemove方法除去一条线程实例;

涉及数据

className:

参数指定的线程类名;

runnerList:

IRunner接口的列表;

threadList:

Thread列表;

备注

5.ThreadManager

说明

功能描述

ThreadManager存放各类线程的列表;

主要方法描述

涉及数据

6.1xxxRunnerList:

存放IRunner接口的线程的引用;

6.2xxxThreadList:

存放Thread类的引用;

备注

第4章生成种子子系统

4.1模块描述

本子模块是爬虫搜索的业务起点。

本模块从时间轴上看有两个阶段的任务:

一是整理种子的输入;二是把种子load到队列中。

每个任务业务上分为为网页采集服务和为二级域名采集服务两种业务。

第一个任务可描述为:

通过整理用户维护的源种子文件并持久化,形成网页采集种子;或从嗅探数据中过滤获取需要的二级域名种子并持久化,形成二级域名采集种子。

第二个任务可描述为:

通过同步机制,将持久化的种子load到内存队列屮。

如下图(图4-1)所示。

整理种/阶段

导入队列阶段

网贞采粢 二级域各采粜

种子生成 种子生成

(图4-1)生成种子模块描述图

>输入:

■网页采集种子生成子模块:

用户维护的种子链接文件;

■二级域名采集种子生成子模块:

嗅探数据;

>输出:

■网页采集种子生成子模块:

与持久化的种子同步的队列;

■二级域名采集种子生成子模块:

与持久化的种子同步的队列;

>运行时机:

1.主线程启动时;

2.用户维护的种子文件的0录有新种子文件吋;

3.配置文件指定启动为二级域名釆集种子生成模块收集种子时;

4.2模块类图

O

Runnable

O

IRunner

【相关说明】:

1.IRunner和RealRunner为线程活动控制相关类,在其他模块中亦然;

2.FileSeedReformater和DBSeedScanner通过代理模式使用

RealRunner;为业务相关类;

3.SeedDBHandle为DB接口类;

4.还需要两类把种子自动装载到

DownloadQueue/DomainDownloadQueue白勺@矛呈;

2.4.模块序列图

整理种子阶段:

\

InstanceCreator

DBSeedScanner

RealRunner

SeedDBHandle

1.InstanceCreator(String)

:

主线程

2.run()

添加到ThreadManager

相设列表中

2.2.run()

^3.1.read()

< 2.3.2.scan()

2.3.3.filter()

2.3.start()

2.3.1.start()

2.3.4.import()

【相关说明】:

4.4重要类和接口描述

AbstractSeedProcessor

说明

功能描述

AbstractSeedProcessor处理种子的超类;通过Proxy模式;使用RealRunner来实现IRunner接口,IRunner接口是其生命活动控制的接口,另实现Runnable使其可以具有线程生命;

主要方法描述

1.read:

抽象方法,该方法在子类实现时,分为读文件和读数据库两种数据来源;

涉及数据

备注

该类未实现Runnable的run方法;

FileSeedReformater类:

说明

功能描述

HIcSeedRcformater是处理用户输入的种子数据,格式化后写入DB;继承了AbstractSeedProcessor,而AbstractSeedProcessor帮它实现了TRunner接口的所有方法,另该类实现Runnable使其可以具有线程生命;

主要方法描述

5.1read:

overwrite了AbstractSeedProcessor的方法;妇描0录,读取种子文件内容;

5.2run:

线程接口方法,调用read、backup和SeedDBHandle的import方法;

5.3backup:

private方法,务份处理完成的种子文件,并删除当前种子文件;

涉及数据

1.seedFileDir:

种子文件目录;

2.seeds:

种子,表映射类;

备注

DBSeedScanner

说明

功能描述

DBSeedScarmer是处理嗅探数裾来源的种子数据,格式化后写入DB;继承了AbstractSeedProcessor,而AbstractSeedProcessor帮它实现了IRunner接口的所有方法,另实现Runnable使其可以具有线程生命;

主要方法描述

1.filter:

过墟嗅探数掘,将二级域名的数掘过波出来;

2.read:

实现了AbstractSeedProcessor的方法;根据配S的策略,调用SeedDBHandle的scan方法读取数据库中的二级域名的信息作为种子;

3.run:

线程接口方法,调用filter和SeedDBHandle的scan、import方法;

涉及数据

1.gnAppData:

嗅探数据,表映射类

2.seeds:

种子,表映射类;

备注

SeedDBHandle

说明

功能描述

SeedDBHandle是DB接口类,按照Seed的格式写入DB;

主要方法描述

1.scan:

扫描嗅探数据,将二级域名的数据扫描出來;

import:

根据Seed数据格式,写入DB;

loadSeeds,deleteSeed,updateSeed,addSeed:

增删改种子和load所有种子;

getMaxOrder,getMinOrder:

取得种子的最大顺序值和最小顺序值;

涉及数据

1.seeds:

种子,表映射类;

备注

第5章网页数据采集子系统

1.Http访问组件模块

2.模块描述

本模块负责http连接和获取http头信息。

业务逻辑为:

从网页采集种子队列中读取种子,然后通过httpCIient连接外部wap/网络,并把http头信息保存到HttpHeader屮,最后封装httpHeader,连接资源的引用等信息存入HeaderQueue中。

>输入:

网页采集种子;

>输出:

封装的HttpHeader和连接资源;

>运行时机:

7.主线程启动该业务线程后;

8.iL种子队列中有待访问种子;

9..目.HeaderQueue未超过警戒长度;

5.1.2模块类

o

Runnable

(fromLogic...)

I*run()

o

Runner

(fromLogicalView)

•isSt

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2