国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

移動數(shù)字城市應用平臺服務端系統(tǒng)數(shù)據(jù)整合模塊的實現(xiàn)途徑

2017-01-04 07:27陳新周斯黎
國土資源導刊 2016年4期
關(guān)鍵詞:附件正文網(wǎng)頁

陳新,周斯黎

(湖南省第一測繪院,湖南 衡陽 421001)

移動數(shù)字城市應用平臺服務端系統(tǒng)數(shù)據(jù)整合模塊的實現(xiàn)途徑

陳新*,周斯黎

(湖南省第一測繪院,湖南 衡陽 421001)

本文主要對移動數(shù)字城市應用平臺服務端系統(tǒng)數(shù)據(jù)整合模塊進行分析研究,通過對數(shù)據(jù)整合模塊的總體結(jié)構(gòu)進行設計與建構(gòu),分析模塊核心功能的技術(shù)流程,并對數(shù)據(jù)整合功能的關(guān)鍵步驟進行系統(tǒng)闡述,總結(jié)出應用平臺數(shù)據(jù)整合模塊的實現(xiàn)途徑。

數(shù)字城市;應用平臺;數(shù)據(jù)整合模塊;信息抓取

1 總體設計

數(shù)據(jù)整合模塊是以子系統(tǒng)的形式進行運行,作為移動數(shù)字城市應用平臺服務端系統(tǒng)的重要組成部分,在實現(xiàn)數(shù)據(jù)整合功能的過程中,根據(jù)需求確定數(shù)據(jù)來源,采取合適的技術(shù)手段獲取數(shù)據(jù)源信息,通過統(tǒng)一的處理流程進行信息分析,從中提取有效內(nèi)容,最后經(jīng)過特定的格式化將這些信息存儲到系統(tǒng)數(shù)據(jù)庫中(圖1)。

在數(shù)據(jù)來源的Web頁面中,可通過HTTP GET請求獲得頁面信息進行抽取,有些頁面則需要通過HTTP POST請求才能獲得頁面信息,有的則是以Web Service服務接口的形式向系統(tǒng)提供。面對這種復雜情況,系統(tǒng)應具有滿足各種條件的信息抽取手段,即系統(tǒng)應當支持采用多種方式來獲取數(shù)據(jù)源的頁面信息,分析頁面結(jié)構(gòu),從中獲取主要信息,最后將提取出來的結(jié)果存入數(shù)據(jù)庫。

2 流程設計

2.1 獲取網(wǎng)頁信息

網(wǎng)頁信息都是以超文本形式組成,通過分析超文本信息,完成對網(wǎng)頁主體內(nèi)容的抽取。網(wǎng)頁的超文本信息就是網(wǎng)頁的源代碼,因此在網(wǎng)頁信息抽取的第一步就是需要獲取數(shù)據(jù)來源頁面的源代碼。

2.2 基于規(guī)則的信息提取

圖1 數(shù)據(jù)整合模塊的總體設計示意圖Fig.1 Overall design of data integration module

在獲得頁面源代碼之后,程序首先將HTML文檔裝載,目的是為了得到形式上的XML文檔(是指文檔仍然按照半結(jié)構(gòu)化的HTML格式來標記,但又支持XML的語法解析),使用Xpath位置路徑表達式定位待抽取的內(nèi)容,從而生成依據(jù)Xpath位置路徑表達式定義的核心抽取規(guī)則[1]。

明確劃分同類頁面邊界之后,找到并分析頁面列表的主體內(nèi)容所在的節(jié)點,確定列表中每個有效內(nèi)容發(fā)布頁面的標題、發(fā)布日期以及URL等信息,根據(jù)這些內(nèi)容發(fā)布頁面的鏈接地址獲得內(nèi)容頁面文檔,在了解內(nèi)容頁面文檔的結(jié)構(gòu)之后,設計出合理的Xpath位置路徑表達式得到有效內(nèi)容的節(jié)點,得到信息的標題、發(fā)布時間、正文內(nèi)容、正文圖片、正文附件等在內(nèi)的數(shù)據(jù)元素。

2.3 正文內(nèi)容處理

在獲取到頁面中包含了正文內(nèi)容的節(jié)點后,程序根據(jù)節(jié)點中數(shù)據(jù)的類型進行分類處理。對于文本數(shù)據(jù),程序會以段落的形式讀取數(shù)據(jù)并清理文本中的HTML符號,使用對應的<text>標簽頭進行封裝。對于圖片數(shù)據(jù),程序會將包含圖片數(shù)據(jù)類型的節(jié)點放到集合中,通過遍歷整個集合將圖片下載到服務器端的文件系統(tǒng)中,再以<img>標簽頭表示出每張圖片在文件系統(tǒng)中的路徑。某些信息發(fā)布頁面會帶有附件,為了方便客戶端用戶獲得這些附件,服務端在信息抽取時需要將這些附件也一并抓取。

系統(tǒng)在完成網(wǎng)頁信息抽取工作后,會得到這些信息對象的集合,然后依據(jù)信息的時間順序?qū)⑺鼈儼凑掌渌鶎俚男畔㈩愋痛嫒敕斩藬?shù)據(jù)庫對應的表中,抓取信息過程如圖2所示。

數(shù)據(jù)整合模塊在設計中引入內(nèi)容格式化的目的是為了方便信息在移動客戶端的顯示,保留了信息等在原始數(shù)據(jù)來源頁面的布局,節(jié)省了移動數(shù)字城市應用平臺管理人員的調(diào)整工作。

3 程序結(jié)構(gòu)

數(shù)據(jù)整合模塊基于.NET Framework 4.0框架使用C#語言開發(fā),整個項目程序集包括:程序入口、功能類、輔助類以及配置文件。

C#默認使用Program.cs類中的Main函數(shù)作為程序的入口點,通過Main函數(shù)啟動程序開始進行信息抓取,程序運行后采取進程常駐的形式,根據(jù)系統(tǒng)設置的時間,每完成一次抓取流程,工作主線程就掛起一段時間,從而實現(xiàn)間隔性的信息抓取,保證了信息的實時性。

功能類是整個數(shù)據(jù)整合模塊的核心類,其負責網(wǎng)頁信息抓取的絕大部分任務,包括獲取頁面HTML文檔、基于規(guī)則提取頁面內(nèi)容、格式化生成最終結(jié)果等主要工作流程。

輔助類主要包括用來描述信息對象模型的Info類和Meeting類、記錄日志的Logger類以及定義數(shù)據(jù)庫操作的Dbcontext類。

程序集的依賴項之間的關(guān)系如圖3,其中包括了程序入口、功能類等項目文件之間的邏輯調(diào)用關(guān)系,另外還有外部依賴項,主要是一些支持程序集運行的動態(tài)鏈接庫文件。

4 應用實現(xiàn)

4.1 獲取網(wǎng)頁信息

網(wǎng)頁信息一般都包含在網(wǎng)頁的HTML文檔中,從圖1總體設計示意圖中可以看出,數(shù)據(jù)整合模塊首先要解決的就是通過各種請求方式從數(shù)據(jù)源中獲得目標網(wǎng)頁的源代碼。

根據(jù)目前服務端系統(tǒng)的數(shù)據(jù)需求種類和數(shù)字城市信息發(fā)布網(wǎng)站的響應特點,程序需要提供三種請求方式分別是:HTTP GET請求、HTTP POST請求以及調(diào)用Web Service服務請求[2]。

圖2 數(shù)據(jù)整合模塊的網(wǎng)頁信息抓取流程圖Fig.2 Data integration module web information grab flow chart

圖3 程序集依賴項關(guān)系圖Fig.3 Assembly dependency relation graph

程序使用的HTTP GET的請求方法是基于C#中的WebRequest類實現(xiàn)的。WebRequest類是.NET Framework平臺中的符合請求/響應模型的抽象基類,通常用于訪問Internet數(shù)據(jù)。使用該請求/響應模型的應用程序可以在協(xié)議未知的情況下從通信遠端請求數(shù)據(jù),在這種方式下,應用程序處理WebRequest類的實例,而協(xié)議特定的子類則執(zhí)行請求的具體細節(jié)。

程序中使用HTTP GET請求獲取Web頁面源代碼的方法需要提供目標Web頁面的URL和字符編碼格式兩個參數(shù),方法執(zhí)行成功后,返回結(jié)果為目標Web頁面的源代碼,其實現(xiàn)的代碼片段如下:

程序使用的HTTP POST的請求方法也是基于WebRequest類實現(xiàn)的,但與HTTP GET請求方式有所差異,程序需要在Request對象中顯式指定請求為Post類型,并且根據(jù)目標頁面的參數(shù)要求,將請求內(nèi)容體以字符流的形式寫入到Request對象中。

請求方法需要提供目標Web頁面的URL和合理的Post請求字符串,執(zhí)行成功后,返回結(jié)果為目標Web頁面的源代碼,其實現(xiàn)的代碼片段如下:

程序一方面通過HTTP GET或HTTP POST請求獲得數(shù)字城市公眾版網(wǎng)頁上面的數(shù)據(jù),另一方面還需要提供能夠調(diào)用Web Service服務接口來請求獲得不同應用系統(tǒng)上面的信息的功能。

Web Service是一種輕量級的獨立的通訊技術(shù),可以通過Internet或者Intranet上接收從其它系統(tǒng)中傳遞過來的請求。Web Service一般基于SOAP協(xié)議在Web上提供的軟件服務,使用WSDL文件進行說明,并通過UDDI進行注冊。與其它開發(fā)平臺不同,C#.NET平臺無需其他的開發(fā)工具,其本身就全面支持Web Service,包括對服務器端的請求處理器以及對客戶端發(fā)送和接受SOAP消息的支持。在C#.NET平臺上調(diào)用Web Service服務接口也比較方便,只需在項目中添加包含Web Service接口的服務引用,就可以快速創(chuàng)建一個服務實例,然后通過調(diào)用實例中的方法,傳遞正確參數(shù),就可以接受SOAP消息[3]。

成功添加Web服務引用后將其命名為bitss-OANews,項目將允許實例化bitssNews的服務對象,該服務對象包含一個獲取各類通知的接口GetNewsInfo,接口參數(shù)名分別為id和Ticket。其中,id值為28~40的整型數(shù)字,Ticket值為固定字符串iiibitss,程序調(diào)用GetNewsInfo方法并以XML節(jié)點形式接收指定類別的消息數(shù)據(jù)。

4.2 基于規(guī)則的信息提取

程序信息提取的規(guī)則核心是基于Xpath位置路徑表達式生成的,所以設計合理有效的Xpath表達式將直接影響到數(shù)據(jù)抽取結(jié)果的準確性。我們在定義信息提取規(guī)則時,要考慮不同類型的Web頁面的結(jié)構(gòu)差異,這里涉及到的類型主要是指Web頁面的數(shù)據(jù)來源類型,此外,信息提取目標頁面還可以根據(jù)頁面數(shù)據(jù)形式分成列表型的網(wǎng)頁和內(nèi)容型的網(wǎng)頁。

在網(wǎng)頁結(jié)構(gòu)上,一般都是列表型頁面包含了多個內(nèi)容型網(wǎng)頁的鏈接入口,所以程序在信息提取過程中的邏輯也基本都是一樣的,信息提取的步驟首先是獲取某個列表型的網(wǎng)頁結(jié)構(gòu)信息,然后根據(jù)解析結(jié)果得到依附于該頁面的多個內(nèi)容型的網(wǎng)頁節(jié)點信息,再對每一個節(jié)點進行信息提取以便獲得每一個具體內(nèi)容頁面的數(shù)據(jù)[4]。

因為對于數(shù)據(jù)整合模塊,其多個數(shù)據(jù)源的數(shù)據(jù)抽取工作采用的都是如上所述的相同的執(zhí)行邏輯,只不過在設計Xpath表達式時需要參考不同的網(wǎng)頁結(jié)構(gòu)特點進行設計。本文主要以網(wǎng)絡主頁的新聞頁面為例,介紹程序?qū)τ诹斜硇秃蛢?nèi)容型網(wǎng)頁的信息提取的實現(xiàn)。

平臺新聞的列表頁面通常也被稱為數(shù)據(jù)密集型網(wǎng)頁(data-rich webpage),因為這種頁面集成了較多有效鏈接,往往也是重要的信息數(shù)據(jù)源。對于新聞列表頁面,當獲得它的HTML代碼后,就需要展開對其文檔結(jié)構(gòu)進行分析,以期找出頁面的局部信息塊和數(shù)據(jù)項的分布規(guī)律。根據(jù)得到的分析結(jié)果,可以推出對應每個局部信息塊的Xpath位置路徑表達式,通過推算出的表達式,得到每個局部信息塊的節(jié)點信息,然后對節(jié)點內(nèi)的元素進行提取,從而獲得全部數(shù)據(jù)項。在獲取每條新聞的標題、發(fā)布日期和具體頁面的URL地址后,程序會先創(chuàng)建一個新聞實體對象,然后將這些數(shù)據(jù)放入新聞實體對象中,再根據(jù)具體頁面的URL獲得具體新聞頁面的HTML代碼,對該頁面的文檔結(jié)構(gòu)進行分析以獲取新聞正文內(nèi)容。對正文部分的數(shù)據(jù)抓取關(guān)鍵在于鎖定正文內(nèi)容所在的節(jié)點,以便于提高抓取行為的效率,避免了無用內(nèi)容干擾結(jié)果。在確定新聞正文內(nèi)容所在的上層節(jié)點之后,程序開始對其下層的所有有效的子節(jié)點進行遍歷。對于新聞頁面的正文內(nèi)容,程序中使用的定位獲取頁面中有效子節(jié)點元素的Xpath位置路徑表達式,經(jīng)過實踐檢驗,該表達式基本滿足了對新聞正文內(nèi)容部分的數(shù)據(jù)抓取需要。

4.3 正文內(nèi)容處理

在獲得所有有效內(nèi)容節(jié)點后,程序還要對這些節(jié)點中包含的數(shù)據(jù)類型進行分類處理。一般來說節(jié)點中包含的數(shù)據(jù)分為文本內(nèi)容、圖片鏈接以及附件名稱和下載鏈接,本文在這里主要是對處理邏輯的具體實現(xiàn)進行說明:

程序首先以HTML節(jié)點集合的形式保存所有的有效內(nèi)容節(jié)點,然后遍歷這個節(jié)點集合。對于每個節(jié)點,程序會判斷這個節(jié)點里面的數(shù)據(jù)類型,具體判斷方法是通過對節(jié)點里面特征元素的判定,使用<img src=></img>或者<input src=/>標簽進行定義,對于包含附件數(shù)據(jù)的節(jié)點元素,一般使用<a href=></a>這樣的超鏈接定義標簽。

對上述這種具有顯性語義特征的判定方法,程序主要依賴于兩種實現(xiàn)方法:一是采用正則表達式匹配節(jié)點中符合特定標簽格式的文本,再從文本中解析出數(shù)據(jù)內(nèi)容;二是利用Xpath表達式查找含有特定屬性的節(jié)點,當沒有找到合適節(jié)點,表明節(jié)點中不包含圖片或附件數(shù)據(jù),否則,表明節(jié)點是屬于圖片或者附件的數(shù)據(jù)類型節(jié)點。

當程序完成對各種數(shù)據(jù)類型節(jié)點的分類后,開始對數(shù)據(jù)進行解析和抓取,程序先使用正則表達式替換無效的HTML標簽或者符號,然后會以換行符“ ”為文本進行分行,這樣可以較好地將網(wǎng)頁原文中的段落格式保留下來,最后在每行非空的字符串之前加上<text>標簽頭,保存到新聞對象的新聞正文中。

對于每一個圖片數(shù)據(jù)節(jié)點,程序會獲得節(jié)點中關(guān)于圖片鏈接地址的屬性,再以圖片在正文出現(xiàn)的次序重命名圖片并進行下載,圖片的下載路徑為程序指定的目錄加上以新聞序號命名的文件夾。圖片下載成功后,程序會在新聞對象的正文內(nèi)容中加入以<img>標簽頭表示出每張圖片在文件系統(tǒng)中的路徑。

對于每一個附件數(shù)據(jù)節(jié)點,程序?qū)ζ浞治龅倪壿嬇c圖片節(jié)點的處理邏輯基本類似,附件的下載文件名也是以附件相對于在正文出現(xiàn)的次序加上文件格式重命名建立的,唯一不同之處在于附件相比于圖片還需要保留附件名稱,附件名稱一般會在網(wǎng)頁中定義附件數(shù)據(jù)的超鏈接標簽中。當程序?qū)⒏郊螺d成功后,會以<attname>標簽頭表示附件名稱,以<atturl>標簽頭表示附件在服務端文件系統(tǒng)的路徑,然后將這些信息放入到新聞對象的正文內(nèi)容部分。

5 結(jié)論

本文對于移動數(shù)字城市應用平臺服務端數(shù)據(jù)整合模塊進行了總體設計,重點參考了移動互聯(lián)網(wǎng)的特點,采用輕量級的開發(fā)框架以及基于JSON格式的數(shù)據(jù)傳輸方法,針對于目前數(shù)字城市網(wǎng)絡布局的分散性和封閉性,采用網(wǎng)頁信息抽取技術(shù)將不同來源的信息統(tǒng)一整合到系統(tǒng)數(shù)據(jù)庫中,以便實現(xiàn)客戶端及時獲得最新的數(shù)字城市資訊。

[1] Mark Priestley.面向?qū)ο笤O計UML實踐[M].第二版.龔曉慶,卞雷.北京:清華大學出版社,2011: 1-8.

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

[3] 程杰.大話設計模式[M].北京: 清華大學出版社,2011: 71-72.

[4] James W.Cooper.C#設計模式[M].張志華,劉云鵬.北京:電子工業(yè)出版社,2011: 85.

[5] 高靜,段會川.基于移動設備的JSON數(shù)據(jù)傳輸效率研究[J].信息技術(shù)與信息化,2011,12(1): 13-15.

[6] 趙池龍.實用軟件工程[M].北京:電子工業(yè)出版社,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年生,軟件工程專業(yè),高級工程師,主要從事測繪、國土規(guī)劃軟件開發(fā)應用等工作。E-mail:438178001@qq.com

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

猜你喜歡
附件正文網(wǎng)頁
大型外浮頂儲罐安全附件常見問題
更正聲明
更正啟事
附件三:擬制定的標準匯總表
基于HTML5與CSS3的網(wǎng)頁設計技術(shù)研究
關(guān)于TSG 07——2019附件M與TSG Z0004——2007內(nèi)容的對照
基于CSS的網(wǎng)頁導航欄的設計
基于HTML5靜態(tài)網(wǎng)頁設計
基于URL和網(wǎng)頁類型的網(wǎng)頁信息采集研究
新型武器及附件展呈
寻乌县| 楚雄市| 辉南县| 扶余县| 孟连| 黄平县| 丹江口市| 河东区| 广昌县| 集安市| 遂平县| 金川县| 庄河市| 云霄县| 新乡市| 阳谷县| 仁化县| 岳阳市| 郑州市| 博白县| 江油市| 平南县| 光泽县| 广灵县| 新闻| 舞钢市| 康保县| 安康市| 渑池县| 杭锦后旗| 裕民县| 应城市| 遵化市| 滕州市| 科技| 德州市| 吉隆县| 共和县| 库车县| 张掖市| 宝鸡市|