一孑 posted on 四月 3, 2009 16:40

Soukey采摘结构比较简单,可以分为五个部分:

1、  网址解析及数据下载:主要对需要采集的网址进行识别,并根据指定的网址进行数据下载,然后根据采集规则进行数据采集。网址的识别可以对带参数的网址进行解析,同时也可以识别具备导航规则的网址。

2、  多线程管理:就是实现数据采集的多线程处理。

3、  数据发布:将采集的数据发布到数据库,同时也可手工导出到文本文件或Excel。发布过程也是多线程处理,但仅限于是多任务线程,不支持单任务多线程的处理。发布做的简单了,主要考虑发布功能后期会进行较大的改动,当前在未经过数据加工的情况下直接发布到数据库感觉实用性不是很强。

4、  任务管理:对各种状态的任务数据的管理。包括静态任务、执行的任务、完毕的任务等。

5、  界面部分:响应用户的各种操作。

主要用到的技术点:

1、  网页数据下载使用的是HttpWebRequest,并未使用webclient,支持cookie,代码中包含了post方式,但未测试。

2、  数据的采集使用的是正则,首先根据采集规则构造正则表达式,然后对网页数据进行分析并采集数据。正则接触的时间不是很长,所以不是很熟悉,在此部分可能有很多问题,如果有对正则熟悉的朋友,希望可以多把把关。

3、  多线程是直接建立的thread,并不是使用的是线程池。当前未考虑线程同步的问题,仅实现了线程的建立和相应事件的响应。线程同步很重要,但还未处理,所以,当前任务的编号采用了全局唯一,临时避免此类问题的发生。多线程的处理当前非常简单。后面会说到存在的问题。

4、  其他的就没有太多的难点了,Soukey采摘所有的数据均为xml文件,用户可随时读取这些文件,文件格式也比较好识别。

当前存在的一些问题(这些问题已经着手解决了,下一个版本会全部解决):

1、  任务的分解方式不合理,因为网址支持导航规则,所以必须在任务执行后才可确认需要采集数据的网址,所以此时才应该进行任务分解,但现在不支持此种方式。即如果存在导航网址,则此网址是在一个线程中执行的。

2、  任务的分解当前也未实现动态分配,即一个线程执行完毕后,需将剩余的任务数据再进行分解,这样会提升效率。但现在如果一个线程执行完毕,则就完毕了,不会再进行分配了。

3、  任务未实现跟踪管理,即任务执行后不能中断,如果中断,需要重头再来。应该实现任务实时数据的保存。

4、  采集后的数据未提供数据加工规则,譬如:字符替换等。如果提供了这样的功能,发布数据才更有效。数据发布接口不一定提供,因为代码已经开源了,如果你有能力做个发布的模块,那肯定有能力在代码基础上直接进行修改,这样反而会更好。


Posted in: 技术文档  Tags:
不允许评论

Blog Roll

    最新评论

    一孑工作室声明
    本站文章均为原创,如果转载请注明出处。

    © Copyright 2010『一孑工作室』
    管理我的网站
    京ICP备10018014号