APP下载

移动数字城市应用平台服务端系统数据整合模块的实现途径

2017-01-04陈新周斯黎

国土资源导刊 2016年4期
关键词:附件正文网页

陈新,周斯黎

(湖南省第一测绘院,湖南 衡阳 421001)

移动数字城市应用平台服务端系统数据整合模块的实现途径

陈新*,周斯黎

(湖南省第一测绘院,湖南 衡阳 421001)

本文主要对移动数字城市应用平台服务端系统数据整合模块进行分析研究,通过对数据整合模块的总体结构进行设计与建构,分析模块核心功能的技术流程,并对数据整合功能的关键步骤进行系统阐述,总结出应用平台数据整合模块的实现途径。

数字城市;应用平台;数据整合模块;信息抓取

1 总体设计

数据整合模块是以子系统的形式进行运行,作为移动数字城市应用平台服务端系统的重要组成部分,在实现数据整合功能的过程中,根据需求确定数据来源,采取合适的技术手段获取数据源信息,通过统一的处理流程进行信息分析,从中提取有效内容,最后经过特定的格式化将这些信息存储到系统数据库中(图1)。

在数据来源的Web页面中,可通过HTTP GET请求获得页面信息进行抽取,有些页面则需要通过HTTP POST请求才能获得页面信息,有的则是以Web Service服务接口的形式向系统提供。面对这种复杂情况,系统应具有满足各种条件的信息抽取手段,即系统应当支持采用多种方式来获取数据源的页面信息,分析页面结构,从中获取主要信息,最后将提取出来的结果存入数据库。

2 流程设计

2.1 获取网页信息

网页信息都是以超文本形式组成,通过分析超文本信息,完成对网页主体内容的抽取。网页的超文本信息就是网页的源代码,因此在网页信息抽取的第一步就是需要获取数据来源页面的源代码。

2.2 基于规则的信息提取

图1 数据整合模块的总体设计示意图Fig.1 Overall design of data integration module

在获得页面源代码之后,程序首先将HTML文档装载,目的是为了得到形式上的XML文档(是指文档仍然按照半结构化的HTML格式来标记,但又支持XML的语法解析),使用Xpath位置路径表达式定位待抽取的内容,从而生成依据Xpath位置路径表达式定义的核心抽取规则[1]。

明确划分同类页面边界之后,找到并分析页面列表的主体内容所在的节点,确定列表中每个有效内容发布页面的标题、发布日期以及URL等信息,根据这些内容发布页面的链接地址获得内容页面文档,在了解内容页面文档的结构之后,设计出合理的Xpath位置路径表达式得到有效内容的节点,得到信息的标题、发布时间、正文内容、正文图片、正文附件等在内的数据元素。

2.3 正文内容处理

在获取到页面中包含了正文内容的节点后,程序根据节点中数据的类型进行分类处理。对于文本数据,程序会以段落的形式读取数据并清理文本中的HTML符号,使用对应的<text>标签头进行封装。对于图片数据,程序会将包含图片数据类型的节点放到集合中,通过遍历整个集合将图片下载到服务器端的文件系统中,再以<img>标签头表示出每张图片在文件系统中的路径。某些信息发布页面会带有附件,为了方便客户端用户获得这些附件,服务端在信息抽取时需要将这些附件也一并抓取。

系统在完成网页信息抽取工作后,会得到这些信息对象的集合,然后依据信息的时间顺序将它们按照其所属的信息类型存入服务端数据库对应的表中,抓取信息过程如图2所示。

数据整合模块在设计中引入内容格式化的目的是为了方便信息在移动客户端的显示,保留了信息等在原始数据来源页面的布局,节省了移动数字城市应用平台管理人员的调整工作。

3 程序结构

数据整合模块基于.NET Framework 4.0框架使用C#语言开发,整个项目程序集包括:程序入口、功能类、辅助类以及配置文件。

C#默认使用Program.cs类中的Main函数作为程序的入口点,通过Main函数启动程序开始进行信息抓取,程序运行后采取进程常驻的形式,根据系统设置的时间,每完成一次抓取流程,工作主线程就挂起一段时间,从而实现间隔性的信息抓取,保证了信息的实时性。

功能类是整个数据整合模块的核心类,其负责网页信息抓取的绝大部分任务,包括获取页面HTML文档、基于规则提取页面内容、格式化生成最终结果等主要工作流程。

辅助类主要包括用来描述信息对象模型的Info类和Meeting类、记录日志的Logger类以及定义数据库操作的Dbcontext类。

程序集的依赖项之间的关系如图3,其中包括了程序入口、功能类等项目文件之间的逻辑调用关系,另外还有外部依赖项,主要是一些支持程序集运行的动态链接库文件。

4 应用实现

4.1 获取网页信息

网页信息一般都包含在网页的HTML文档中,从图1总体设计示意图中可以看出,数据整合模块首先要解决的就是通过各种请求方式从数据源中获得目标网页的源代码。

根据目前服务端系统的数据需求种类和数字城市信息发布网站的响应特点,程序需要提供三种请求方式分别是:HTTP GET请求、HTTP POST请求以及调用Web Service服务请求[2]。

图2 数据整合模块的网页信息抓取流程图Fig.2 Data integration module web information grab flow chart

图3 程序集依赖项关系图Fig.3 Assembly dependency relation graph

程序使用的HTTP GET的请求方法是基于C#中的WebRequest类实现的。WebRequest类是.NET Framework平台中的符合请求/响应模型的抽象基类,通常用于访问Internet数据。使用该请求/响应模型的应用程序可以在协议未知的情况下从通信远端请求数据,在这种方式下,应用程序处理WebRequest类的实例,而协议特定的子类则执行请求的具体细节。

程序中使用HTTP GET请求获取Web页面源代码的方法需要提供目标Web页面的URL和字符编码格式两个参数,方法执行成功后,返回结果为目标Web页面的源代码,其实现的代码片段如下:

程序使用的HTTP POST的请求方法也是基于WebRequest类实现的,但与HTTP GET请求方式有所差异,程序需要在Request对象中显式指定请求为Post类型,并且根据目标页面的参数要求,将请求内容体以字符流的形式写入到Request对象中。

请求方法需要提供目标Web页面的URL和合理的Post请求字符串,执行成功后,返回结果为目标Web页面的源代码,其实现的代码片段如下:

程序一方面通过HTTP GET或HTTP POST请求获得数字城市公众版网页上面的数据,另一方面还需要提供能够调用Web Service服务接口来请求获得不同应用系统上面的信息的功能。

Web Service是一种轻量级的独立的通讯技术,可以通过Internet或者Intranet上接收从其它系统中传递过来的请求。Web Service一般基于SOAP协议在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI进行注册。与其它开发平台不同,C#.NET平台无需其他的开发工具,其本身就全面支持Web Service,包括对服务器端的请求处理器以及对客户端发送和接受SOAP消息的支持。在C#.NET平台上调用Web Service服务接口也比较方便,只需在项目中添加包含Web Service接口的服务引用,就可以快速创建一个服务实例,然后通过调用实例中的方法,传递正确参数,就可以接受SOAP消息[3]。

成功添加Web服务引用后将其命名为bitss-OANews,项目将允许实例化bitssNews的服务对象,该服务对象包含一个获取各类通知的接口GetNewsInfo,接口参数名分别为id和Ticket。其中,id值为28~40的整型数字,Ticket值为固定字符串iiibitss,程序调用GetNewsInfo方法并以XML节点形式接收指定类别的消息数据。

4.2 基于规则的信息提取

程序信息提取的规则核心是基于Xpath位置路径表达式生成的,所以设计合理有效的Xpath表达式将直接影响到数据抽取结果的准确性。我们在定义信息提取规则时,要考虑不同类型的Web页面的结构差异,这里涉及到的类型主要是指Web页面的数据来源类型,此外,信息提取目标页面还可以根据页面数据形式分成列表型的网页和内容型的网页。

在网页结构上,一般都是列表型页面包含了多个内容型网页的链接入口,所以程序在信息提取过程中的逻辑也基本都是一样的,信息提取的步骤首先是获取某个列表型的网页结构信息,然后根据解析结果得到依附于该页面的多个内容型的网页节点信息,再对每一个节点进行信息提取以便获得每一个具体内容页面的数据[4]。

因为对于数据整合模块,其多个数据源的数据抽取工作采用的都是如上所述的相同的执行逻辑,只不过在设计Xpath表达式时需要参考不同的网页结构特点进行设计。本文主要以网络主页的新闻页面为例,介绍程序对于列表型和内容型网页的信息提取的实现。

平台新闻的列表页面通常也被称为数据密集型网页(data-rich webpage),因为这种页面集成了较多有效链接,往往也是重要的信息数据源。对于新闻列表页面,当获得它的HTML代码后,就需要展开对其文档结构进行分析,以期找出页面的局部信息块和数据项的分布规律。根据得到的分析结果,可以推出对应每个局部信息块的Xpath位置路径表达式,通过推算出的表达式,得到每个局部信息块的节点信息,然后对节点内的元素进行提取,从而获得全部数据项。在获取每条新闻的标题、发布日期和具体页面的URL地址后,程序会先创建一个新闻实体对象,然后将这些数据放入新闻实体对象中,再根据具体页面的URL获得具体新闻页面的HTML代码,对该页面的文档结构进行分析以获取新闻正文内容。对正文部分的数据抓取关键在于锁定正文内容所在的节点,以便于提高抓取行为的效率,避免了无用内容干扰结果。在确定新闻正文内容所在的上层节点之后,程序开始对其下层的所有有效的子节点进行遍历。对于新闻页面的正文内容,程序中使用的定位获取页面中有效子节点元素的Xpath位置路径表达式,经过实践检验,该表达式基本满足了对新闻正文内容部分的数据抓取需要。

4.3 正文内容处理

在获得所有有效内容节点后,程序还要对这些节点中包含的数据类型进行分类处理。一般来说节点中包含的数据分为文本内容、图片链接以及附件名称和下载链接,本文在这里主要是对处理逻辑的具体实现进行说明:

程序首先以HTML节点集合的形式保存所有的有效内容节点,然后遍历这个节点集合。对于每个节点,程序会判断这个节点里面的数据类型,具体判断方法是通过对节点里面特征元素的判定,使用<img src=></img>或者<input src=/>标签进行定义,对于包含附件数据的节点元素,一般使用<a href=></a>这样的超链接定义标签。

对上述这种具有显性语义特征的判定方法,程序主要依赖于两种实现方法:一是采用正则表达式匹配节点中符合特定标签格式的文本,再从文本中解析出数据内容;二是利用Xpath表达式查找含有特定属性的节点,当没有找到合适节点,表明节点中不包含图片或附件数据,否则,表明节点是属于图片或者附件的数据类型节点。

当程序完成对各种数据类型节点的分类后,开始对数据进行解析和抓取,程序先使用正则表达式替换无效的HTML标签或者符号,然后会以换行符“ ”为文本进行分行,这样可以较好地将网页原文中的段落格式保留下来,最后在每行非空的字符串之前加上<text>标签头,保存到新闻对象的新闻正文中。

对于每一个图片数据节点,程序会获得节点中关于图片链接地址的属性,再以图片在正文出现的次序重命名图片并进行下载,图片的下载路径为程序指定的目录加上以新闻序号命名的文件夹。图片下载成功后,程序会在新闻对象的正文内容中加入以<img>标签头表示出每张图片在文件系统中的路径。

对于每一个附件数据节点,程序对其分析的逻辑与图片节点的处理逻辑基本类似,附件的下载文件名也是以附件相对于在正文出现的次序加上文件格式重命名建立的,唯一不同之处在于附件相比于图片还需要保留附件名称,附件名称一般会在网页中定义附件数据的超链接标签中。当程序将附件下载成功后,会以<attname>标签头表示附件名称,以<atturl>标签头表示附件在服务端文件系统的路径,然后将这些信息放入到新闻对象的正文内容部分。

5 结论

本文对于移动数字城市应用平台服务端数据整合模块进行了总体设计,重点参考了移动互联网的特点,采用轻量级的开发框架以及基于JSON格式的数据传输方法,针对于目前数字城市网络布局的分散性和封闭性,采用网页信息抽取技术将不同来源的信息统一整合到系统数据库中,以便实现客户端及时获得最新的数字城市资讯。

[1] Mark Priestley.面向对象设计UML实践[M].第二版.龚晓庆,卞雷.北京:清华大学出版社,2011: 1-8.

[2] 王珊,刘怡.Sybase PowerDesigner原理和使用高级指南[M].北京:中国水利水电出版社,2010: 112-152.

[3] 程杰.大话设计模式[M].北京: 清华大学出版社,2011: 71-72.

[4] James W.Cooper.C#设计模式[M].张志华,刘云鹏.北京:电子工业出版社,2011: 85.

[5] 高静,段会川.基于移动设备的JSON数据传输效率研究[J].信息技术与信息化,2011,12(1): 13-15.

[6] 赵池龙.实用软件工程[M].北京:电子工业出版社,2011: 84-85.

Realization on the Data Integration Mode of System Platform Service Terminal Mobile Digital City

Chen Xin, Zhou Sili
(The First Surveying and Mapping Institute of Hunan, Hengyang Hunan 421001)

This paper provides the data integration mode of system platform service terminal mobile digital city.Firstly, we design and construct the systematical structure of data integration mode.Then, the technical procedure of the mode core function is analyzed.Finally, the key process of data integration function is provided.

digital city; platform; data integration; information capture

F301.2

B

1672-5603(2016)04-087-6

*第一作者简介 陈新,男,1978年生,软件工程专业,高级工程师,主要从事测绘、国土规划软件开发应用等工作。E-mail:438178001@qq.com

2016-6-21;改回日期:2016-7-25。

猜你喜欢

附件正文网页
大型外浮顶储罐安全附件常见问题
更正声明
更正启事
附件三:拟制定的标准汇总表
基于HTML5与CSS3的网页设计技术研究
关于TSG 07——2019附件M与TSG Z0004——2007内容的对照
基于CSS的网页导航栏的设计
基于HTML5静态网页设计
基于URL和网页类型的网页信息采集研究
新型武器及附件展呈