合理的使用模式能大大提高程序的可重复使用率,同时也减少了后期维护的成本。在对应某一个网站的信息抓取时,主要分为3步:(1)首先根据要抓取的新闻类型的地址,通过相应的HTMLParser表达式,从而获得特定新闻类型的URL地址;(2)把该URL地址集合传递给信息提取模块,该信息提取模块根据新闻模板的规则抓取具体的新闻信息;(3)每个网站都有新闻类信息,但对应一些特定的信息,如视频新闻,供求信息,则不是每个网站都会开设,也就是说在抓取的时候要根据需要给抓取程序的实例中初始化特定的接口,来实现特定的功能。在抓取时,步骤(1)和(2)构成了修饰模式,因为在步骤(2)的程序中,需要处理相应的URL,而此URL正产生于步骤(1)。以上是单个Seed的提取流程。当程序启动时,会依次读入Seed表的触发器,触发相对应新闻地址提取类实例,这样就可以将多个类的实例化任务交给工厂程序来完成,也就是把多个Seed自动放到任务队列里。这样做是为了提高系统的可维护性,一旦需要抓取新的Seed的时候,只需要修改工厂程序即可。
利用工厂模式来初始化每个网站对应的抓取实例,不仅降低了程序的耦合性,同时可以根据每个网站的特点,设一些特殊信息的抓取接口,极大地提高系统的个性化抽取这个特点,信息提取的时候根据此模式策略来提取信息。Spring2.x的XMLSchema方式提供了简洁的事务配置策略,借助于aop,tx两个命名空间的帮助,系统可以非常方便地为业务逻辑组件配置事务管理。借助于Spring2.x的事务管理,当在抓取时候抛出异常,Spring事务框架就会自动回归事务,使数据库信息返回到抓取前的状态。当程序在Tomcat容器内配置成功后,启动Tomcat服务器,采集程序会在指定的时刻自动按照系统流程采集网页信息,并持久化到数据库中对应的数据表。在此需要说明的是,本系统保存了正文内的一些html标签,这是为了让正文信息在新的页面生成时能够自动组织。