采集系统升级目标
1、 代理功能,目前用过路由换IP地址,经常由于切换太频繁了,导致路由死了要重启
2、 采集进本地数据库,将符合要求的进采集服务器,再由采集自动进系统后台,减少服务器的负担。方便栏目分化。设置采集源的数据保存在采集数据库。通过页面管理各栏目的采集源。对采集源进行批量操作。
3、 多线程采集
4、 翻页不只有递增的情况,需要另一种情况N*一页的行数。
5、 针对列表与详细页面中网页编码不同的情况。
6、 报警机制:如果列表或是标题内容采集不到的情况,提示
7、 时时采集数量统计页面,显示主要栏目下采集的数量用于控制。
8、 采集信息的记录带上采集源的Source_id,便于跟踪信息有效率。
9、 可以模拟登录采集到信息。
10、 可以采集带有多个翻页的信息内容。
11、 定时器功能
12、 系统托盘显示栏目和用户名信息。
13、 有异常处理机制,并记录日志。
需要建立一 个AC数据库,MSSQL也行,有四个表:PageType用于记录页面的种类,比如列表页和详细页两类;Url表用于记录要采集的网址,另外还有一个字 段TypeID标明该网址属于哪一种页面类型,比如是列表页还是详细页;Rule表记录着各种规则,主要有三个字段,FromTypeID源页类 型,ToTypeID目的页类型,Pattern规则;CjPage用于存储采集到的网页内容,还包含网址和页面种类。
采集策略的核心就在于规则库Rule。
工作过程大概这样:
1,采集线程从Url表抽取一个网址,并马上在表中将其删除,为了防止冲突,这个过程需要用多线程同步解决;
2,用WebClient请求该网址的页面内容;
3,取得内容后,给线程池的线程来分析处理,本线程回到1,继续去Url表取下一个网址;
4,线程池在有空闲线程时,会调用分析函数ParsePage去处理上次获得的页面内容;
5,先到Rule中取所有FromTypeID为当前网址TypeID;
6,如果没有取到任何规则Rule,则将本页内容写入到CjPage中;
7,如果取到规则,那么遍历规则,为每条规则执行ParseUrl方法;
8,ParseUrl根据规则的Pattern匹配到页面内容中的所有网址,并记录到Url中,规则的ToTypeID就是Url的TypeID。
1,采集线程从Url表抽取一个网址,并马上在表中将其删除,为了防止冲突,这个过程需要用多线程同步解决;
2,用WebClient请求该网址的页面内容;
3,取得内容后,给线程池的线程来分析处理,本线程回到1,继续去Url表取下一个网址;
4,线程池在有空闲线程时,会调用分析函数ParsePage去处理上次获得的页面内容;
5,先到Rule中取所有FromTypeID为当前网址TypeID;
6,如果没有取到任何规则Rule,则将本页内容写入到CjPage中;
7,如果取到规则,那么遍历规则,为每条规则执行ParseUrl方法;
8,ParseUrl根据规则的Pattern匹配到页面内容中的所有网址,并记录到Url中,规则的ToTypeID就是Url的TypeID。
转载:http://www.cnblogs.com/nnhy/archive/2007/08/18/860656.html