b) 并发解析线程数:20
5) 资源使用率:
a) 下载服务:CPU占用率50%,内存占用率500MB
b) 解析服务:CPU占用率70%,内存占用率800MB
3.6 本章小结
本章主要对需求分析阶段所做的相关工作进行了描述,为后期系统设计和开发工作做准备。首先从技术可行性、操作可行性和经济可行性三个方面对系统可行性进行了评估,随后对系统的用户对象和用户用况从管理员用户和普通用户两个角度进行了详细的分析,并分别总结出了相应的功能需求,最后对系统的性能需求进行了简要分析。
4 系统总体设计
系统需求分析阶段主要提出了系统需要做什么,系统设计阶段需要解决的问题就是系统需要怎么做。系统设计阶段的主要参考依据是需求分析阶段得出的相关结果,据此进行系统的数据库结构设计和功能模块设计,本阶段的工作是对上一阶段分析结果的进一步具体化。
4.1 数据库结构设计
良好的数据库结构对于保障一个应用程序始终运行在高性能状态具有非常重要的意义。数据库结构如果没有设计好将会给以后的工作带来很多麻烦,一方面是性能问题,另一方面是维护问题。过多的重复性数据会严重影响系统的执行性能,当这些数据的一个实例发生改变时,其他数据也都要进行相应的改变。
本系统使用SQL Server 2005作为数据库管理工具,SQL Server 2005是一个具备完整的Web支持的数据库产品,提供了以Web标准为基础的扩展数据库编程功能。在数据访问层,采用JDBC直接访问数据库的方式,通过SQL语句操作数据库,简单易用。
根据本系统的实际需求,数据库中需要具备的基本表有三个:
1) 新闻信息列表dbo.news(如表4-1所示)
表4-1 帖子信息列表
字段名 字段类型 字段限制 注释 news_id INT 主键 新闻编号 News_url NVARCHAR not null 数据来源 news_title NVARCHAR not null 新闻标题 news_pudbate NVARCHAR not null 新闻发布时间 news_media NVARCHAR not null 新闻发布方 news_content NVARCHAR not null 新闻内容 news_type INT not null 新闻类型编号 news_typename NVARCHAR not null 新闻类型 news_typecode INT not null 新闻类型编码 news_smalltype NVARCHAR not null 新闻详细类别 news_picture NVARCHAR 无 新闻图片
2) url信息列表dbo.newsurl(如表4-2所示)
表4-2 数据源信息列表
字段名 字段类型 字段限制 注释 url_id INT 主键 数据源编号 url VARCHAR not null 数据源名称
3) 新闻类别列表dbo.newstype(如表4-3所示)
表4-3情感倾向标注列表
字段名 字段类型 字段限制 注释 type_id INT 主键 新闻类型编号 type_content VARCHAR not null 新闻类型 type_code INT not null 新闻类型编码 smalltype VARCHAR not null 新闻详细类别 这三个表之间的实体-关系图如图4-1所示:
图4-1 数据库实体-关系图
4.2 系统功能模块设计
整个新闻爬虫系统应该包括四部分的功能模块:爬取类别的选择、数据获取模块、数据存入模块、数据分析以及数据可视化模块。其总体的工程如图4-2所示:
图4-2 系统主要工作流程
4.2.1 数据获取功能模块
在该新闻爬虫系统中,数据的获取主要依靠网络爬虫来实现。爬虫程序在针对系统指定的网站进行爬行时,会对网页中的相关元数据进行抽取并保存在本地数据库中。
爬虫程序主要由链接过滤子模块、页面解析子模块、爬行控制子模块以及数据存储子模块构成,其模块结构如图4-3所示:
图4-3 数据获取功能模块结构图
1) 链接过滤子模块
在爬虫程序的爬行过程中,需要不断地向待抓取的URL队列中添加新的URL,而爬虫作为计算机程序具有机械执行的特性,无法智能判断出某一个URL是否需要进行解析,这就要求在爬行过程中需要为爬虫定义一个链接过滤器,只有符合某些条件的URL才能被过滤器所识别,其余不符合条件的URL将会被链接过滤器过滤掉,不会加入到待抓取的爬行队列中去,同时对于符合条件的URL也要判断该URL是否被爬取过,如果已被爬过则舍弃。
在爬虫中采用链接过滤器进行URL过滤是很有必要的。一方面,能够被过滤器识别的URL符合用户预定义的过滤规则,这些URL全部都是用户所期望获取的数据来源,数据抓取的准确性得到很好的保证;另一方面,由于大量不符合条件的URL都被过滤掉了,爬行队列中仅仅加入符合条件的URL,大大节省了宝贵的内存空间。
链接过滤子模块的工作方式如图4-4所示:
图4-4 链接过滤子模块
2) 页面解析子模块
爬行队列在爬虫程序中的地位是非常重要的。在爬虫程序的工作过程中,需要不断地提取符合链接过滤器的URL加入到爬虫队列中去,这些URL所指向的HTML页面可以分为两类:一类是可以直接从中获取元数据的HTML页面,另一类是包含更多符合链接过滤器的URL但是不能抽取元数据的HTML页面。对于第一类HTML页面,直接利用HTML解析工具对其进行解析并进行元数据抽取;对于第二类HTML页面,则需要对其进行URL抽取而非元数据抽取,将HTML中复合链接过滤器的URL全部提取出来进行重爬判断并将符合条件的URL加入到爬行队列中去。
页面解析子模块的工作方式如图4-5所示:
图4-5 页面解析子模块
3) 爬行控制子模块
爬行控制模块是整个爬虫程序的核心,它控制着整个爬虫的抓取策略(宽度优先或者深度优先)以及停止条件。爬行控制子模块的工作流程如图4-6所示:
图4-6 爬行控制子模块
4) 数据存储子模块
在每次进行完HTML页面的信息抽取之后,都要将所有获取到的元数据写入到数据库中去,另外还需要将本次抓取的URL也写入数据库中。数据存储子模块的工作流程如图4-7所示:
图4-7 数据存储子模块
4.2.2 数据可视化功能模块
图4-8 数据可视化功能结构图
系统可视化功能模块的主要功能结构如图4-8所示,通过ExtJS结合Google Visualization API进行构建,其主要功能包括:
1) 显示欢迎页:用户进入本系统后显示欢迎信息并对系统主要功能进 展示;
2) 查看各类新闻:查看当前类型的新闻;
3) 按关键字,时间等多条件搜索新闻:输入关键字和日期进行检索,查看当前符合条件的新闻;
4) 查看新闻类别分析柱状图:输入日期进行检索,可查看当前日期下的新闻类别的分析柱状图,在没有日期限制的条件下就显示全部新闻的类别分析柱状图;
5) 查看新闻小类别分析柱状图:输入日期进行检索,可查看当前日期下的新闻小类别的分析柱状图,在没有日期限制的条件下就显示全部新闻的小类别分析柱状图;
6) 查看新闻数量随月份的变化折线图:输入日期进行检索,可查看对于当前年份下的新闻数量随月份变化的折线图;
7) 查看新闻数量在一天中的变化折线图:输入日期进行检索,可查看对于当前日期下的新闻数量随时间变化的折线图;
4.3 本章小结
本章节对新闻爬虫系统进行了数据库结构的总体设计以及系统功能模块的总体设计,并对数据获取功能模块的子模块以及数据可视化功能模块的功能结构做出了明确的划分,为系统详细设计与实现阶段的工作备好条件。
5 系统详细设计与实现
本章节将围绕新闻爬虫系统的功能模块详细设计和技术实现展开详细说明,针对系统总体设计进行细化和扩充,详细地设计每个模块实现算法以及所需的局部结构,最后将所有的设计方案进行技术实现。
5.1 数据获取模块
数据获取模块主要利用Java语言结合HTTPClient开源工具编写了一个针对新闻的可扩展的网络爬虫,该爬虫程序能够按照广度优先的爬行策略对新闻数据进行全面的定向抓取以
上一篇:
数据库大作业_-教务管理系统—华中科技大学
下一篇:
上海电气集团毕业实习报告