




免费预览已结束,剩余32页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本本 科科 毕毕 业业 论论 文文 基于远程调用数据的新闻采集系统基于远程调用数据的新闻采集系统 News Gathering System Based On Long-distance Data Calling 姓 名: 学 号: 学 院:软件学院 系:软件工程 专 业:软件工程 年 级: 指导教师: 职称: 职称: 年年 月月 摘摘 要要 随着时代的发展,电脑的普及率日益提高,人们获取新闻的途径由原来的 电视,报纸逐渐变为由网络获取新闻。近年来,新闻网站如雨后春笋般发展了 起来,通过电脑浏览网页新闻已经成为一种潮流。 作为毕业设计课题,我设计开发了一种能将目标新闻网站的信息采集,对 广告进行过滤,将新闻存储到本地数据库的新闻采集系统。该系统基于.NET 平 台,通过“新闻采集”技术,自动获取其他网站的全部页面内容,经程序的适 当加工处理后,输出给浏览者。这种技术,可以替换 LOGO、网站标题、署名、 广告等信息,对原始信息进行分析处理,应用于一个新的网站。 本文从.NET 平台特性入手,重点论述基于远程调用数据的新闻采集系统的 设计及实现方法,并展示软件的运行及测试结果,然后对本课题开发的系统做 了总结。 关键词:关键词:.NET 平台;新闻采集;远程调用数据; Abstract With the development of the times, more and more people own computers, the way people access news from television, newspapers has changed. People also get news from the Internet nowadays. In recent years, news websites develop like mushrooms, and browse websites via computers has become more and more popular. As the graduation project, I have designed and developed a Web site to target news information collection, filtering of ads will be news to the local database storage system. The system is based on. NET platform, through the “news gathering“ technology, automatic access to all the other sites page content, these data, after appropriate processing, the output to the viewer. This technology can replace the LOGO, website title, signed, advertising and other information, the original analysis of information processing, applied to a new site. This article starts from the characteristics of the. NET platform, with emphasis on news gathering system based on long-distance data calling and how to design and implementation of the method, and demonstrate the operation of the software and test results, and then make a summary of this system. Key Words: . NET Platform;News Gathering;Long-distance Data Calling; 目目 录录 第一章第一章 引言引言1 第二章第二章 系统相关技术概述系统相关技术概述3 2.12.1 .NET.NET 平台简介平台简介3 2.22.2 .NET.NET 平台中的用户界面设计平台中的用户界面设计6 2.2.1 CSS 样式表6 2.2.2 CSS 应用.6 2.32.3 正则正则表表达式达式8 2.42.4 线程线程.8 第三章第三章 系统总体设计系统总体设计10 3.13.1 系统概述及功能系统概述及功能10 3.1.1 开发背景10 3.1.2 总体目标10 3.23.2 总体设计总体设计11 3.2.1 设计原则11 3.2.2 设计规范12 3.2.3 数据库设计14 第四章第四章 系统详细设计系统详细设计17 4.14.1 项目结构项目结构17 4.1.1 时序图17 4.1.2 流程图17 4.24.2 用户界面模块设计用户界面模块设计18 4.34.3 系统实现系统实现步步骤骤.18 4.3.1 远程获取页面 Html 源文本.19 4.3.2 获取有效的内容文本.20 4.3.3 入库处理21 第五章第五章 系统测试及运行结果系统测试及运行结果25 5.15.1 功能测试功能测试25 5.25.2 性能测试性能测试26 5.35.3 运行结果运行结果27 第六章第六章 总结总结29 致谢致谢.30 参考文献参考文献31 Content Chapter 1 Introduction1 Chapter 2 System related technologies outline.3 2.1 .Introduction to .Net platform3 2.2 Interface design.6 2.2.1 Cascading Stylesheet6 2.2.2 The application of CSS 6 2.3 Regular Expressions8 2.4 Thread8 Chapter 3 System overall design10 3.1 System profiler and function.10 3.1.1 Development background.10 3.1.2 Overall objective.10 3.2 Overall design11 3.2.1 Design principles 11 3.2.2 Design code.12 3.2.3 Database design 15 Chapter 4 System detial design.17 4.1 The structure of the project.17 4.1.1 Timing diagram.17 4.1.2 Flow chart .17 4.2 Interface module design18 4.3 Procedures to achieve these.18 4.3.1 Access to the source text 19 4.3.2 Access to the effective contents20 4.3.3 Storage to the database21 Chapter 5 System testing and running result25 5.1 Functional test25 5.2 Performance test.26 5.3 Running results27 Chapter 6 Summarize.29 Acknowledgement.30 References.31 基于远程调用数据的新闻采集系统 1 第一章 引言 随着 Internet 的普及与发展,网络已经深入到了人们生活的各个方面,成为经济、 文化、社会、教育以及娱乐等几乎所有领域的重要组成部分。同时,网络也以惊人 的速度在全球蔓延,据统计,全球目前网页数已经超过 200 亿张,并且每天还以数百 万张的速度在增长1,其中出现了许多专业的新闻网站(如:SINA,搜狐等),使得拥 有电脑的人们可以随时地了解最新的新闻,人们可以在娱乐中了解最新的新闻。 网页新闻已经成功地融入到人们的生活。网络技术近几年来得到了突飞猛进的发 展,给新闻信息的更新提供了极大便利。 近几年来,在网络中新闻功能正在变得越来越重要。提供新闻信息是各个新 闻网站最主要的功能,而只有最大限度地获取信息,才能够为用户提供最有价值 的信息,因此新闻网站的基本运作模式应该是:获取信息加工、筛选、分类、 聚合信息输出信息。网站之间互通有无、共享信息,是解决网站信息来源的 主要方法之一。一般的实现方法是通过人工方式有选择地转载其他网站的文章、 图片等,或者建立超级链接指向其他网站的相关信息,但是这样的方法需要大量 的人力资源维护网站,更新网站。许多小型网站无法支持如此大的输出,将有可 能减缓网页新闻的发展速度。另外,随着网页数量的日益增多,Web 在为用户提供 丰富信息和知识来源的同时,由于多种原因,例如为了增强用户交互性而加入的 Script,为了便于用户浏览而加入的导航链接,出于商业因素所加入的广告链接等,给 用户带来了“信息过载” 2。 针对上述缺点,我的毕业设计在.NET 平台上设计和实现了一个简单的新闻采 集系统,主要通过自动获取其他网站的全部页面内容,经程序的适当加工处理后 ,输出给浏览者。这种技术,可以替换 LOGO、网站标题、署名、广告等信息,对 原始信息进行分析处理,应用于一个新的网站。应用“新闻采集”技术与传统的 通过人工方式相比的优点:无须维护网站,因为程序中的数据来自其他网站,它 将随着该网站的更新而更新,可以节省服务器资源。 基于远程调用数据的新闻采集系统 2 本毕业设计课题来源于软件学院拟定毕业设计课题,主要目标是设计开发 一种能以 sina 新闻版面为信息读取源,将读取的信息经过一定的处理和灵活应 用,存入本地数据库,开发成成体系网站内容采集系统。该系统基于.NET 平台, 通过网络与 sina 新闻网站进行交互,远程获取页面的全部 Html 源文本,通过过 滤处理,分析有效内容文本.(通常用正则表达式来截取有效数据),将格式有效的 数据,根据自己的数据库结构分标题,内容一些其他属性保存到自己的本地数 据库。本软件在开发实现过程中采用模块化、结构化的软件设计思想,提高系统 的可移植性和可维护性,在实现技术上,采用人性化的用户界面(CSS 样式表), 灵活的数据处理,实时准确读取信息。 基于远程调用数据的新闻采集系统 3 第二章 系统相关技术概述 2.1 .NET 平台简介平台简介 .NET 平台是 C#,VB.net 等程序运行的平台,它为这些语言提供了丰富的类库 (称之为基类库)。 图 2.1 是一张描述.NET 平台的整体结构: 图图 2.1 .NET 平台的整体结构平台的整体结构 这个图就是.NET 平台结构图,从这个图上可以看到,.NET Framework 是在 Microsoft.NET 平台上开发的基础,ASP.NET、Windows Forms 和 VS.NET 都不过是. NET 平台开发的一部分,他的用于.NET 应用程序的开发及展示。.NET 平台的核心 技术为: 公共语言运行库 (CLR: Common Language Runtime)、基类库(BCL: Base Class Library)、.NET 语言及 Visual Studio.NET3。 从这个图上可以看出,.NET Framework 是架构在 Windows 平台上的一个虚拟 的运行平台,你可以将最下层 Windows 换做其他的操作系统,例如说 Linux,一样 可以实现使用符合 CLS(Common Language Specification,通用语言规范)的.NET 语言(VB.NET、C#、JScript.NET 等)来创建 ASP.NET 或 Windows Form(也叫 Linux Forms)应用程序的功能。C#是一种可以跨平台的语言。C#编写的程序代 基于远程调用数据的新闻采集系统 4 码是通过 C#编译器编译为一种特殊的字节代码作为中间语言,运行时再经由特定 的编译器(JIT 编译器)编译为机器代码,以供操作系统执行。 不仅是 C#语言,所有.NET 语言(包括常用的几十种现代的编码语言)都可以 编写面向 CLR 的程序代码,这种代码在.NET 中被称为托管代码(Managed Code), 所有的 Managed Code 都直接运行在 CLR 上,具有与平台无关的特性3。 解释性的语言很安全,并且可以通过他的运行平台为其赋予更多的功能2, 例如自动内存管理,异常处理等,事实上,C#语言的许多特点都是由 CLR 提供 的,图 2.2 所示的 CLR 结构图说明了这一点。 图图 2.2 CLR 结构图结构图 公共语言运行库(Common Language Runtime, CLR)最早被称为下一代 Windows 服务运行时 (NGWS Runtime).它是直接建立在操作系统上的一个虚拟环 境,主要的任务是管理代码的运行。CLR 现在支持几十种现代的编程语言为它编 写代码,然后以一种中间语言(Intermediate Language, IL)代码的形成被执行。 并且,CLR 还提供了许多功能以简化代码的开发和应用配置,同时也改善了应用 基于远程调用数据的新闻采集系统 5 程序的可靠性。如果某种语言的编译器是以运行库为目标的,那么利用该语言开 发生成的代码在.NET 中被称为托管代码,因为这样的代码是直接运行在 CLR 上的, 所以具有与平台无关的特点。 从图 2.2 可以看到,C#所具有的许多特点都是由 CLR 提供的,如类型安全 (Type Checker)、垃圾回收(Garbage Collector)、异常处理(Exception Manager)等,具体的说,.NET 上的 CLR 为开发者提供如下的服务: 平台无关:CLR 实际上是提供了一项使用了虚拟机技术的产品,他构架在操 作系统之上,并不要求程序的运行平台是 Windows 系统,只要是能够支持它的运 行库的系统,都可以在上面运行.NET 应用。所以,一个完全由托管代码组成的应 用程序,只要编译一次,就可以在任何支持.NET 的平台上运行。 跨语言集成:CLR 语序开发这以任何语言进行开发,用这些语言开发的代码, 可以在 CLR 环境下紧密无缝的进行交叉调用,例如,可以用 VB 声明一个基类对 象,然后在 C#代码中直接创建基类的派生类。 自动内存管理:CLR 提供了拉架收集机制,可以自动管理内存。当对象或变 量的生命周期结速后,CLR 会自动释放他们所占用的内存。 自描述组件:自描述组件是指将所有数据和代码都放在一个文件中的执行文 件。自描诉组件可以大大简化系统的开发和配置,并且改进系统的可靠性。 在.NET 平台结构图中,CLR 的上面是.NET 的基类库,这组基类库包括从基本 输入输出到数据访问等各方面,提供了一个统一的面向对象的,层次化的,可扩 展的编程接口。从.NET 平台结构图中也可以看到,基类库可以被各种语言调用和 扩展,也就是说不管是 C#,VB.NET 还是 VC+.NET,都可以自由的调用,.NET 的类 库。 公共语言架构(Common Language Infrastructure, CLI).CLI 是 CLR 的一个 子集,也就是.NET 中最终对编译成 MSIL 代码的应用程序的运行环境进行管理的 那一部分。在 CLR 结构图中 CLI 位于下半部分,主要包括类加载器(Class Loader)、实时编译器(IL To Native Compilers)和一个运行时环境的垃圾收 集及将使用任何语言编写的代码,通过其特定的编译器转换为 MSIL 代码之后运 行其上,甚至还可以自己写 MSIL 在 CLI 上运行。 基于远程调用数据的新闻采集系统 6 2.2 .NET 平台中的用户界面设计平台中的用户界面设计 2.2.1 CSS 样式表样式表 本系统的网页样式使用 CSS 样式,CSS 就是一种叫做样式表(style sheet) 的技术。也称之为层叠样式表(Cascading Style Sheet) 。是用于增强网页样式并 允许将样式信息与网页内容分离的一种标记性语言4。在主页制作时采用 CSS 技 术,可以有效地对页面的布局、字体、颜色、背景和其它效果实现更加精确的控 制。 只要对相应的代码做一些简单的修改,就可以改变同一页面的不同部分, 或者页数不同的网页的外观和格式5。 它的作用: (1)在几乎所有的浏览器上都可以使用。 (2)以前一些非得通过图片转换实现的功能,现在只要用 CSS 就可以轻松实现, 从而更快地下载页面。 (3)使页面的字体变得更漂亮,更容易编排,使页面真正赏心悦目。 (4)可以轻松地控制页面的布局 。 (5)可以将许多网页的风格格式同时更新,不用再一页一页地更新了。可以将 站点上所有的网页风格都使用一个 CSS 文件进行控制,只要修改这个 CSS 文件 中相应的行,那么整个站点的所有页面都会随之发生变动。 没有使用 CSS 前控制字体的颜色和大小以及所使用的字体一般使用 HTML 标签来实现,代码非常烦琐。 如果在一个页面里需要频繁地更替字体的颜色大 小,最终生成的 HTML 代码的长度将臃肿不堪。 CSS 就是为了简化这样的工作 诞生的,当然其功能决非这么简单。 CSS 是通过对页面结构的风格控制的思想, 控制整个页面的风格的。 式样单放在页面中,通过浏览器的解释执行,是完全 的文本。 2.2.2 CSS 应用应用 可以用以下 3 种方式将样式表加入网页,而最接近目标的样式定义优先权越 高,高优先权样式将继承低优先权样式的未重叠定义但覆盖重叠的定义6。 (1) 链入外部样式表文件 (Linking to a Style Sheet) 基于远程调用数据的新闻采集系统 7 可以先建立外部样式表文件(.css) ,然后使用 HTML 的 link 对象。示例如下: title of article 而在 XML 中,你应该如下例所示在声明区中加入: (2)定义内部样式块对象 (Embedding a Style Block) 可以在 HTML 文档的和标记之间插入一个 .块对象。示例如下: (3) 内联定义 (Inline Styles) 内联定义即是在对象的标记内使用对象的 style 属性定义适用其的样式表属性。 示例如下: 样式表语法 (CSS Syntax) Selector property: value 参数说明: 基于远程调用数据的新闻采集系统 8 Selector - 选择符 property : value - 样式表定义。属性和属性值之间用冒号(:)隔开。定义之间 用分号(;)隔开。 2.3 正则表达式正则表达式 网页信息处理首先需要分解出网页中的有用信息单元和无效(或作用不大)单 元,往往采用网页清洗技术7。网页清洗主要分三步:首先是去除页面中的注释、脚 本、样式表等无关信息8。本系统使用正则表达式对网页信息进行过滤。正则表 达式是在文本中相当强大的寻找规律或验证一个特定的模式,如电话号码,电子 邮件地址, IP 地址,或者只是任何需要进行检查的文本9。 正则表达式可以: (1)验证字符串是否符合指定特征,比如验证是否是合法的邮件地址。 (2)用来查找字符串,从一个长的文本中查找符合指定特征的字符串,比 查找固定字符串更加灵活方便。 (3)用来替换,比普通的替换更强大。 2.4 线程线程 本系统在数据采集的时候使用了线程技术,WINDOWS 是一个多任务的系统, 可以通过任务管理器查看当前系统运行的程序和进程。程序开始运行时,它就是 一个进程,进程所指包括运行中的程序和程序所使用到的内存和系统资源。而一 个进程又是由多个线程所组成的,线程是程序中的一个执行流,每个线程都有自 己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可 以执行同样的函数10。多线程是指程序中包含多个执行流,即在一个程序中可以 同时运行多个不同的线程来执行不同的任务,也就是说允许单个程序创建多个并 行执 行的线程来完成各自的任务。多线程的好处在于可以提高 CPU 的利用率, 在多线程程序中,一个线程必须等待的时候,CPU 可以运行其它的线程而不是等 待,这样就大大提高了程序的效率11。 基于远程调用数据的新闻采集系统 9 Thread 类用于对线程的操作,包括线程的创建和启动、控制线程的执行和线程 之间的同步12,下面是一段有关于线程的范例代码。 namespace ThreadTest class RunIt STAThread static void Main(string args) Thread.CurrentThread.Name=“System Thread“;/给当前线程起名为 “System Thread“ Console.WriteLine(Thread.CurrentThread.Name+“Status:“+Thread.CurrentThread.Thread State); Console.ReadLine(); Thread 类有几个至关重要的方法,如表 2.1 所描述: 表表 2.12.1 ThreadThread 类主要方法类主要方法 方法名作用 Start() 启动线程 Sleep(int) 静态方法,暂停当前线程指定的毫秒 数 Abort() 通常使用该方法来终止一个线程 Suspend() 仅仅挂起线程,以后还可恢复。 Resume() 恢复被 Suspend()方法挂起的线程执行 基于远程调用数据的新闻采集系统 10 第三章 系统总体设计 3.1 系统概述及功能系统概述及功能 3.1.1 开发背景开发背景 Internet 正在日益成为一个重要的信息来源,如何对 Web 数据进行检索和加工, 使得用户能够更好地利用 Internet 上的数据资源己经成为了新的研究热点13。 在网络上可以找到许多新闻网站,但它们采集新闻的方式大都是通过人工方 式有选择地转载其他网站的文章、图片等,或者建立超级链接指向其他网站的相 关信息,但是这样的方法需要大量的人力资源维护网站,更新网站。为了创建一 个新闻网站,往往需要很大的资金。为了能够让小型网站能及时的更新新闻信息, 则必须要有一个系统来统一收集、分类、更新这些新闻信息。 本课题来源于软件学院拟定毕业设计课题。主要目标是设计开发一种能以 sina 新闻版面为信息读取源,将读取的信息经过一定的处理和灵活应用,存入本地 数据库,开发成成体系网站内容采集系统。 3.1.2 总体目标总体目标 该系统应实现的是一种能自动获取其他网站的全部页面内容,经程序的适当 加工处理后,输出给浏览者。这种技术,可以替换 LOGO、网站标题、署名、广 告等信息,对原始信息进行分析处理,应用于一个新的网站。总体目标如下: (1) 实现对目标网页的 HTML 源文件的自动获取。 (2) 通过正则表达式截取有效数据,存入本地数据库。 (3) 将数据显示给用户。 (4)美观、人性化的用户界面。 基于远程调用数据的新闻采集系统 11 3.2 总体设计总体设计 3.2.1 设计原则设计原则 系统设计时将遵循以下主要原则: 可靠性: 本系统为新闻采集系统,系统提供的服务器、操作系统、数据库和 应用软件等必须都是成熟技术;组成的系统能经得起考验,在受到 冲击时能自行恢复,或在少量的人工干预下就能恢复;应用软件必 须具有很高的鲁棒性,对各种各样的错误、干扰具有包容和排除能 力。 高性能: 该系统对硬件系统并具有很高的性能要求,运行时有高的对数据库 的操作性能和页面快响应。 好的客户人机界面: 本系统拥有简洁的设计页面版式和跳转样式,并有强大的错误处理 机制,人机界面良好。 高效性: 速度是系统的生命,必须保证操作快速进行的速度,从而满足大规 模业务处理的要求 简单性: 在达到预定的目标、具备所需要的功能前提下,系统应尽量简单, 这样可以减少处理费用,高效益,便于实现和管理。 经济性: 系统的经济性是指系统的收益应大于系统指出的总费用。 安全性: 现在的计算机病毒几乎都来自于网络,Web 应用应尽量采用五层安 全体系,即网络层安全、系统安全、用户程序的安全和数据安全。 系统提高可靠性,对使用信息进行严格的权限管理,技术上,应采 用严格的安全与保密措施,保证系统的可靠性、保密性和数据一致 基于远程调用数据的新闻采集系统 12 性等。 实用性: 这是所有应用软件最基本的原则,直接衡量系统的成败,每一个提 交到用户手中的系统都应该是使用的,能解决用户的实际问题。 可维护性和可管理性: WEB 系统应该有一个完善的管理机制。 适用性和可扩展性: 系统需要具备一定的适应能力,特别是 web 应用要能适用于多种运 行环境,来应对未来变化的环境和需求。可扩展性主要体现在系统 易于扩展,例如可以采用分布式设计,系统结构模块化设计,系统 构架可以根据网络环境和用户的访问量而适时调整,从某种程度上 说,这也是系统的适应性14。 3.2.2 设计规范设计规范 说明可以引用现有的各种设计规范或各种软件开发的国家标准或规范,主要 包括: 命名约定: 包括规定数据库表(文件)名,数据名,程序、系统和子系统名,变量名,函 数名等的编制规范。 数据库使用规范: (1)服务器上有关数据库的一切操作只能由服务器管理人员进行。 (2)程序中访问数据库时使用统一的用户、统一的连接文件访问数据 库。 (3)原则上每一个频道只能建一个库,库名与各频道的英文名称相一 致,库中再包含若干表。比较大的、重点的栏目可以考虑单独建库,库 名与栏目的英文名称相一致。 命名: (1) 数据库、表、字段、索引、视图等一系列与数据库相关的名称必 须全部使用与内容相关的英文单词命名(尽量避免使用汉语拼音) ,对于 基于远程调用数据的新闻采集系统 13 一个单词难以表达的,可以考虑用多个单词加下划线(_)连接(不能超 过四个单词)命名。 (2) 所有的名称必须统一使用英文小写字母。 (3) 所有的名称起始和结尾不能使用下划线(_) 。 (4) 所有的名称不能包含 26 个英文小写字母和下划线(_)以外的其 他字符。 (5)不再使用的数据库、表应删除,在删除之前必须备份(包括结构 和内容) 。 程序,系统和子系统名命名规则: 以每个单词大写开头字母,并把各个单词串起来。 界面约定: 页面风格: (1)使用安排和流程 在西方文化中(包括中国) ,人们习惯于从左到 右,从上到下进行阅读,因此,应该将重要信息放在上面和左边。左上 角最容易吸引起人们的注意力。 (2)使用强调 使用焦点、位置、分组、层次、启用/禁用、大小、颜 色或者字体等,来将注意力集中在需要首先看到的用户界面控件上。尽 量以可视的方式指明用户接下来应该进行的操作。 (3)遵循一致的准则,确立标准并遵循。无论是控件使用,提示信息 措辞,还是颜色、窗口布局风格,遵循统一的标准,做到真正的一致。 变量命名规则: 前缀(小写字母加下划线)表明变量的作用域,无前缀则表明是局部变 量或函数的参数。如: m_xx表示是类的成员变量,控件变量例外。 g_xx表示是全局变量,在 C#中,也可以理解为在整个项目中 都可能用到的静态变量。 c_xx或者 XX表示是一个常量。 函数命名规则: 函数名用首字母大写的英文单词组合表示(如用动词+名词的方法) ,其 基于远程调用数据的新闻采集系统 14 中至少有一个动词。 应该避免的命名方式: 和继承来的函数名一样。即使函数的参数不一样,也尽量不要这么做, 除非想要重载它。 只由一个动词组成,如:Save、Update。改成如:SaveValue、 UpdateDataSet 则比较好 函数参数的命名规则: 函数参数应该具有自我描述性,应该能够做到见其名而知其意。 用匈牙利命名法命名。 类命名规则: 类的命名通常以父类的简写开头。如:FrmXXX 可看出该类从 Form 中继承 而来。 类名中尽量不要出现下划线。 类变量的命名可以参照,如:FrmXXX frmXXX = new FrmXXX(),即首 字母小写即可。 常见语句书写规则,如表 3.1 所示: 表表 3.1 常见语句书写规则常见语句书写规则 语句提倡的风格 ifif(condition) statements; else statements; forfor(initialization; condition; update) statements; foreachforeach(something in collection) statements; switchswitch() 基于远程调用数据的新闻采集系统 15 case : break; case : break; default: whilewhile() statements; do-whiledo statements; while(condition); try-catchtry statements; catch(Exception e) handle exception; 同一代码块 内的不同逻 辑块之间应 空一行 do statement1; do statement2; 函数与函数 之间至少空 一行,但不 超三行 3.2.3 数据库设计数据库设计 数据库主要是存储经过滤后的信息,如表 3.2 所示的是存储新闻文章信息的表: 基于远程调用数据的新闻采集系统 16 表表 3.2 NEWS 表表 字段名称描述类型主键(PK)ALLOW NULL ID自动编号做 主键 自动编号PKNO NEWSTITLE文章标题VARCHAR( 50) NO NEWSAUTHOR文章作者VARCHAR( 50) NO NEWSCONTENT文章内容NVARCHAR (MAX) NO NEWSTYPE文章类型VARCHAR( 50) NO 基于远程调用数据的新闻采集系统 17 第四章 系统详细设计 4.1 项目结构项目结构 4.1.1 时序图时序图 后台程序由程序员启动,时序图如图 4.1 所示: 图图 4.1 时序图时序图 程序员启动 ThreadCollect 类,ThreadCollect 类调用方法 start()启动 NewsThread 类,NewsThread 类通过 collect()方法运行 NewsData 类,NewsData 类 通过方法 getNewsInfo()从网站读取有用的信息,通过 insert()写入本地数据库。 4.1.2 流程图流程图 在本系统中,用户无需关心系统是如何运作的,用户只需要从显示界面中获 取新闻信息。图 4.2 显示了用户获取新闻信息的流程图: 基于远程调用数据的新闻采集系统 18 主主 主主 主主主主 主主主主主主 回回 主主 图图 4.2 流程图流程图 用户登录网站,查看主页,选择新闻点击查看,随时可以退出。 4.2 用户界面模块设计用户界面模块设计 用户界面是用户与系统交互的窗口,界面设计的好坏对一个软件产品的成败 起着非常大的作用,界面的友好性决定了用户对软件的第一印象15。许多软件大 多在界面制作上需要花费一半以上的精力,界面不是核心技术,而是用户接口。 但一个软件成功与否不仅仅取决于核心功能,还有一个很重要的方面就是界面。 界面做得友好、容易使用、美观,用户一般会有较高的评价。用户界面使用 CSS 样式表使用户界面美观、大方且易于操作,如图 4.3 所示。 图图 4.3 易于操作的用户界面易于操作的用户界面 4.3 系统实现步骤系统实现步骤 作为一个简单的网站内容采集系统,应该具备以下基本功能: (1)远程获取页面的全部 Html 源文本。 基于远程调用数据的新闻采集系统 19 (2)通过过滤处理,分析有效内容文本。 (3)将格式有效的数据,根据自己的数据库结构分标题,内容一些其他属性保存 到自己的本地数据库。 4.3.1 远程获取页面远程获取页面 Html 源文本源文本 要想远程获取页面 Html 源文本,首先获取 Html 源的基本方法如下: private string getHtmlCode(string url) string resultHtmlCode; WebClient wc = new WebClient(); byte pageData = wc.DownloadData(url); resultHtmlCode = GetString(pageData); return resultHtmlCode; 以上代码为获取远程 Html 源的一个方法.参数仅一个.就是你要获取的目标 页面的完整 Url 路径.返回一个 string 类型的 Html 源数据。 但是现在的主流新闻网站中一般所使用的编码格式是“UTF-8”或 “GB2312” ,若直接将获取的源文本进行分析,将会产生大量的乱码,要想去除 乱码,必须先将其格式转化,改进后的方法如下: private string getHtmlCode(string url) string resultHtmlCode; WebClient wc = new WebClient(); Encoding _utf8 = System.Text.Encoding.GetEncoding(“utf-8“); byte pageData = wc.DownloadData(url); resultHtmlCode = _utf8.GetString(pageData); return resultHtmlCode; private string getHtmlCode2(string url) string resultHtmlCode; 基于远程调用数据的新闻采集系统 20 WebClient wc = new WebClient(); Encoding _GB2312 = System.Text.Encoding.GetEncoding(“GB2312“); byte pageData = wc.DownloadData(url); resultHtmlCode = _GB2312.GetString(pageData); return resultHtmlCode; 根据网站编码格式的不同将其转化为相同的格式,以避免乱码的出现,方便 对其做分析过滤处理。 4.3.2 获取有效的内容文本获取有效的内容文本 获取页面的 HTML 源信息后,要对源信息进行分析处理,对获取的源信息 进行分析处理,如截取某一条标题新闻的主体源代码: /截取某一条标题新闻的网页的主体源代码(从中可以获取余下的新闻信息) string startStr1, endStr1; startStr1 = “; endStr1 = “; startPos2 = htmlCode.IndexOf(startStr1, k); endPos2 = htmlCode.IndexOf(endStr1, startPos2); codeLenth2 = endPos2 - startPos2; string temp1 = htmlCode.Substring(startPos2, codeLenth2); k = endPos2; 根据 IndexOf()方法确定需要截取字段所在的位置,取出相关字段,再对 其源代码进行分析,从中可截取出标题新闻的内容的网页的链接,再获取标题新 闻的内容的网页的 HTML 源代码如: startPos6 = temp1.IndexOf(“, 0); endPos6 = temp1.IndexOf(“, startPos6); codeLenth6 = endPos6 - startPos6; newsLinkj = temp1.Substring(startPos6, codeLenth6); newsLinkj = newsLinkj.Replace(“, “); newsLinkj = newsLinkj.Replace(“, “); 基于远程调用数据的新闻采集系统 21 getContectj = getHtmlCode2(newsLinkj); 获取相关链接地址的字段时使用 Replace()方法过滤多余的字段,得到符 合要求的字段,并用 getHtmlCode2()方法获取标题新闻的内容的网页的 HTML 源 代码。 再从标题新闻的内容的网页的 HTML 源代码中获取新闻内容等信息,如: startPos4 = getContectj.IndexOf(“, 0); endPos4 = getContectj.IndexOf(“, startPos4); codeLenth4 = endPos4 - startPos4; string temp3 = getContectj.Substring(startPos4, codeLenth4); startPos7 = temp3.IndexOf(“, 0); endPos7 = temp3.IndexOf(“ “, startPos7); codeLenth7 = endPos7 - startPos7; newsContentj = temp3.Substring(startPos7, codeLenth7); newsContentj = newsContentj.Replace(“, “); newsContentj = newsContentj.Replace(“, “); 另外,新闻标题,新闻类型,新闻作者等内容的获取也类似,就不一一列 举了。 4.3.3 入库处理入库处理 为了保证系统的灵活性,在该系统中把服务器和数据库连接的相关参数通过 配置文件(web.config)配置,如: 基于远程调用数据的新闻采集系统 22 使用构造函数并使用 insert()方法将读取并分析过滤过的字段存入数据库, 完成入库操作。 public News() newstitle = “; newstype = “; newsauthor = “; newscontent = “; public string newstitle; /新闻标题 public string newstype; /新闻类型 public string newsauthor; /新闻作者 public string newscontent; /新闻内容 /声明类的公共属性 public string NewsTitle get return newstitle; set newstitle = value; public string NewsType get return newstype; set newstype = value; 基于远程调用数据的新闻采集系统 23 public string NewsAuthor get return newsauthor; set newsauthor = value; public string NewContent get return newscontent; set newscontent = value; /声明类的公共方法 /1、insert 方法,插入一条记录 . string conString = System.Configuration.ConfigurationSettings.AppSettings“conString“.ToString(); public bool insert(News tempnews) SqlConnection sqlCon = new SqlConnection(conString); string s = “insert into NewsTable(NewsTitle, NewsAuthor, NewsContent,NewsType) values(“ + “ + tempnews.NewsTitle.ToString() + “ + “, “ + “ + tempnews.NewsAuthor.ToString() + “ + “,“ + “ + tempnews.NewContent.ToString() + “ + “,“ + “ + tempnews.NewsType.ToString() + “ + “)“; 基于远程调用数据的新闻采集系统 24 SqlCommand sqlCmd = new SqlCommand(s, sqlCon); try sqlCon.Open(); sqlCmd.ExecuteNonQuery(); catch (SqlException se) throw (new Exception(se.ToString(); catch (Exception e) throw (new Exception(e.ToString(); finally sqlCmd.Connection.Close(); return true; 基于远程调用数据的新闻采集系统 25 第五章 系统测试及运行结果 5.1 功能测试功能测试 Functional testing (功能测试),也称为 behavioral testing(行为测试) ,根据产 品特征、操作描述和用户方案,测试一个产品的特性和可操作行为以确定它们满 足设计需求16。本地化软件的功能测试,用于验证应用程序或网站对目标用户能 正确工作。使用适当的平台、浏览器和测试脚本,以保证目标用户的体验将足够 好,就像应用程序是专门为该市场开发的一样。 功能测试也叫黑盒子测试或数据驱动测试,只需考虑各个功能,不需要考虑整 个软件的内部结构及代码.一般从软件产品的界面、架构出发,按照需求编写出来 的测试用例,输入数据在预期结果和实际结果之间进行评测,进而提出更加使产品 达到用户使用的要求。 在计算机的世界里,凡是提供服务的一方称为服务器(Server) ,而接受服务 的另一方称作客户机(Client)16。 对服务器的功能测试主要是看是否有将新闻内容按要求写入数据库。 对于客户机的功能测试主要对人机交互部分进行测试,由于涉
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025近距离货物运输合同模板,合同范本
- 2025合作投资合同范本
- 2025年湖北省荆州市辅警招聘考试题库及答案
- 2025年海南省万宁市辅警人员招聘考试题库及答案
- 2025年海南省东方市辅警招聘考试题题库(含参考答案)
- 2025年国家公务员考试《申论》真题卷(行政执法)及答案解析
- 高中政治课件书单
- 2025年学历类自考中国广告学-心理学参考题库含答案解析(5套试卷)
- 2025年小学保健教师聘任合同
- 2025无污染蔬菜购销合同
- 三人合伙经营合同
- 大学班助培训
- 子公司设立管理制度
- 阿氏圆教学课件
- 陇南市成县县属国有企业招聘笔试真题2024
- 环保行业成本管理制度
- 内蒙古自治区“十五五”农牧业发展计划
- 中等职业学校幼儿保育专业《婴幼儿行为观察与引导》课程标准
- (2025)事业单位考试(面试)试题与答案
- 沈阳地铁入职笔试题目及答案
- 产后耻骨护理
评论
0/150
提交评论