王朝网络
分享
 
 
 

网站采集器系统设计(请大师们指点)

王朝other·作者佚名  2006-01-10
宽屏版  字体: |||超大  

1功能说明1.关键字生成

关键子可以从关键字库、论坛中提取。人工可以直接输入关键字,并可以加入关键字库中。

2.网址获取

调用googleapi根据关键字在internet中检索,获取网址列表。人工可以直接添加或从网址库中选取网址列表。对于当前列表可以保存到网址库中,保存时注意过滤重复网址。

3.采集任务设置

系统根据采集任务进行自动化采集。任务设置包括采集的网址、过滤规则、登录信息等。

4.自动化任务设置

此任务系统定时启动。任务设置包括启动时间、采集任务等。

5.临时任务生成

系统根据googleapi检索结果,自动生成相应的采集任务。

6.人工裁剪

人工删除不需要的内容。

7.重复过滤

系统根据裁剪后的内容在本次任务集中进行查找,抛弃相同的任务。

8.级联提取

系统根据裁剪后的内容提取相关连接,包括图片、附近、flash和关联的网页。系统生存临时的子任务。

9.网站转向识别

有些网址点击之后会转向到另外一个网址,系统自动替换任务中的目标地址。

10.网站登录

对于需要登录才能看到信息内容的网站,系统能模拟用户登录。

11.字段提取

系统能够根据规则自动提取标题、正文、作者、来源、关键字及正文分页。

12.人工修改

人工编辑抓取的内容

13.关联内容

人工关联抓取的内容,关联可以从子任务中获得。也可人工从本次任务和发布库中查找。

14.入库

人工将抓取的内容保存到数据库中。系统自动检查关联的完整性。

16.抓取规则描述文件RDF.XML

使用XML语言描述抓取规则、网站结构。系统提供标签语言,如标题、作者、出处、页码、超链等。系统根据网页结构描述文件实现自动化提取、自动化发布。

2目标方向系统终极目标就是实现全自动主题搜索、全自动化抓取,全自动化发布;不依赖googleapi搜索引擎,使用自主引擎搜索主题内容;提供内容订阅服务。

3总体策略任务规则通过xml格式定义。以任务为独立单元。一个任务中的过滤器可以互相共享数据,前一个过滤的结果可以作为后一个过滤器的输入。系统能够根据过滤器的输入依赖关系,自动调整过滤器的执行顺序。提供数据库操作描述,可以将抓取的结果自动的发布到数据库中。输入源一般是url,系统根据url自动抓取相应的页面作为任务的输入。4模块结构

说明:图中箭头表示模块间的数据流向。任务之间为多线程并发执行。过滤器树根据过滤器的输入关系构建树状结构,树中同一层的过滤器为多线程并发执行。网站采集器将hash码保存到自有的数据库中,以便以后唯一性检查。

5用例

6类图配置文件解析:

说明:ConfigParser在系统启动时候解析RDF.xml配置文件。解析结果存放在TaskEntity、FilterEntity、DatabaseEntity中。

TaskEntity对应标签:<task><id></id><atuotime></atuotime>…</task>;

FilterEntity对应标签: <filter><in></in><keys><key>…</key></keys></filter>

DatabaseEntity对应标签:<database>…<sql>…</sql></database>

过滤器引擎:

说明:FilterRunner以多线程的方式负责调度过滤器。当FilterTread向缓存输出时, FilterRunner负责启动它的下一个孩子(过滤器)。

FilterRunner充当TaskBoundary的门面,暴露OutBufferEntity。

过滤器是在RDF.XML中定义。

TreeConstruct根据过滤器之间的输入关系以树型结构放入FilterTreeEntity中。如:a、b、c、d四个过滤器。a是b的输入,b是c的输入,a是d的输入,则他们的数据结构为:

a

/ b d

/

c

他们的结构含义是:父亲是孩子的输入,兄弟之间是独立的。从线程的角度看,一条支路上的节点是顺序关系,同一层次上的节点是并列关系。所以FilterRunner负责启动a。与到a输出时启动b、d。遇到b输出时启动c。

任务引擎:

说明:TaskRunner以多线程的方式启动任务。

TaskTread充当OutBufferEntity的门面。当FilterBoundary向OutBufferEntity输入时,TaskTread将检查DataBaseTask所需的过滤器输出是否完全,如果完全,则启动DataBaseTask。

7典型时序图

说明:系统在第一次启动时,解析配置文件,构建过滤器树,启动任务控制器。任务控制器根据现有的任务启动任务处理线程,任务处理线程启动各自的过滤控制器。过滤器的输出将触发过滤器控制器启动下一节点的过滤器,并且触发任务控制器检查数据库操作所需的值,如果完备,则启动数据库任务。

8应用接口系统采用开放式结构,使用门面和总控制器设计模式(自己瞎说的),暴露和隐蔽相应接口,使系统易于扩展,并且不失系统的安全和健壮性。

系统提供面向配置文件(RDF.XML)的应用接口:

l FilterTread:过滤器的实现

l DataBaseTask:数据库操作的实现

用户可以扩展这两个接口,实现自己业务逻辑,在RDF.XML声明。由总控制器统一调度和管理。

9RDF设计RDF关键字定义:

<task><id></id><atuotime></atuotime>…</task>

task任务的根节点,id是任务的唯一号,atuotime:任务启动时间。如果为-1,则用不启动;

<page><count></count><start></start><end></end></page>

页码定义。count表明抓取多少页,start页码的开始处,end页码的结束处;

<filters><filter><id></id><time></time><in></in><keys><key><id></id>…</key></keys>

</filter></filters>

过滤器,id是过滤器的唯一号,time表明过滤多少次。所有的关键字都定义在过滤器中。过滤器中的多个关键字在一个上下文中提取。in是过滤器的输入,值为某一过滤器的关键字值,或者是url;

<database><url></url><driver></driver><username></username>

< userpassword ></userpassword><hashcode></hashcode>

<sqls><sql><id></id>…</sql></sqls></database>

数据库配置,sql文可以是select语句,也可以是update、insert等语句。Hashcode为内容的唯一标识。系统将根据此值到hashcode表中检索是否重复。

关键字列表:

task

page

filters

database

id

sqls

count

start

end

time

in

sql

keys

url

driver

username

userpassword

key

filter

atuotime

hashcode

Rdf.xml示例:

<task>

<id>t1<id>

<atuotime>10</atuotime>

<filters>

< filter>

<id>f1</id>

<in>http://www.sina.com.cn</in>

<page>

<count>10</count>

<start>akdfa;fakf;a</start>

<end>22;kjk;ja</end>

</page>

<keys>

<key>

<id>url</id>

<start>dfasf</start>

<end>adkfkajf</end>

</key>

</keys>

< filter>

< filter>

<in>f1.url</in>

<keys>

<key>

<id>content</id>

<start>dfasf</start>

<end>adkfkajf</end>

</key>

</keys>

< filter>

</fileters>

</task>

10特殊说明系统没有实现通过搜索引擎获取网站种子,在以后的版本中,将实现。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有