文/路輝 高尚飛 李少龍
隨著現代信息技術的迅猛發展,互聯網規模的不斷擴大,尤其家庭光纖網絡寬帶的接入和4G移動網的不斷普及,新的網絡業務層出不窮,互聯網應用已經深入到人們生活的方方面面,B/S(Browser客戶端瀏覽器/Server服務器端服務應用)技術架構的互聯網網站由于其可直接通過瀏覽器進行網站訪問優勢,是其發展及應用最為突出和廣泛。互聯網網站使用超文本標記語言(HTML)作為表達的信息展示www(萬維網)網站,其分為客戶端瀏覽器和服務器端應用程序的開發架構模式。目前,企事業單位內部業務系統采用B/S架構以成為系統建設共同遵循和采用的技術架構,廣泛應用于企業級信息管理系統和業務系統。
HTTP協議,即超文本傳輸協議(HTTPHypertext transfer protocol)是一種詳細規定了瀏覽器和萬維網服務器之間互相通信的規則,通過因特網傳送萬維網文檔的數據傳送協議。HTTP協議是一種分布式、協作式的通信協議,用戶客戶端瀏覽器與服務端web服務器的數據傳輸交互,是互聯網上應用層上應用最廣泛的協議。
互聯網網站主要分為信息提供和業務操作類,信息提供如新聞、股票行情之類的網站,業務操作如網上營業廳等。當然,也有很多網站同時具有這兩種性質,如購物網站、視頻網站等,既提供信息,也實現某些業務。隨著互聯網的飛速發展,由于基于HTTP協議傳輸的Browser/Server模式架構的優勢,企業級業務系統采用B/S技術架構已是通用架構標準。B/S結構是隨著Internet技術的興起,對C/S結構的一種改進,在這種結構下,軟件應用的業務邏輯完全在應用服務器端實現,用戶表現完全在Web服務器實現,客戶端只需要瀏覽器即可進行業務處理,是一種全新的系統構造技術。
目前,基于B/S架構的企業級業務系統實現系統間數據集成方式主要有兩種方式,一是采用接口的系統間數據集成,其應用最為典型和廣泛的為Web Service的服務接口應用;二是數據庫層數據庫賬號授權訪問的數據獲取集成方式。
Web Service是使用SOAP機制的XML消息傳遞,XML 是目前主流的數據交換技術,它可以實現具有相當靈活性的、通用的數據交換接口,可以有效的解決不同應用系統、不同數據源之間的數據共享與交流問題,實現原理如圖1Web Service接口實現原理所示。
數據庫的賬號授權訪問是指通過在數據庫中以管理員身份權限創建一個新的用戶,并給其賦予相應權限的操作。典型的數據庫權限控制為Oracle數據庫,其權限為允許用戶訪問屬于其它用戶的對象或執行程序,ORACLE系統提供三種權限:Object對象級、System系統級、Role 角色級,日常用到的為系統及管理權限,主要包括DBA、RESOURCE及CONNECT三種權限;然而,在業務系統的數據庫賬號訪問實現業務系統數據共享時,往往要精確到實體級(即數據庫表或視圖)上的select(查詢)、update(更新)、insert(插入)、delete(刪除)等具體的數據訪問控制,確保數據的安全管控。
業務系統的接口集成或數據庫授權訪問集成,均需要原業務系統進行相關改造或申請賬號及授權操作,其往往在實際工作中由于改造需項目資金支持或利益風險等原因,導致業務系統數據集成工作常常難以推進,影響相關業務開展工作。
互聯網網頁數據的采集通常是針對信息提供類網站的網頁數據抓取后進行分類存儲,是一個自動提取網頁表單數據的Web 程序。互聯網信息采集我們主要采用基于垂直搜索引擎的主題爬蟲技術,對互聯網上的某類主題信息頁面全自動識別、分類、抓取, 并能夠實現網頁指紋消重和信息消重, 同時對主題信息頁面進行去除無關信息和信息自動抽取。針對不同的網絡爬蟲采集形式,其主要實現原理如圖2互聯網數據采集基本實現流程所示。
網絡爬蟲的基本工作流程:首先選取一部分精心挑選的種子URL;再將這些URL放入待抓取URL隊列;從待抓取URL隊列中取出待抓取在URL,解析DNS,并且得到主機的ip,并將URL對應的網頁下載下來,存儲進已下載網頁庫中。此外,將這些URL放進已抓取URL隊列。最后分析已抓取URL隊列中的URL,分析其中的其他URL,并且將URL放入待抓取URL隊列,從而進入下一個循環。

圖1:Web Service接口實現原理

圖2:互聯網數據采集基本實現流程
基于HTTP協議的業務系統數據采集功能結構設計包括采集設置、數據采集、任務調度及數據存儲4部分。數據采集結構如圖3業務系統數據采集系統結構圖所示。

圖3:業務系統數據采集系統結構圖
數據采集設置主要要求使用者完成要采用業務系統的登錄操作,且需保證采集用戶是業務系統的合法用戶,權限滿足數據采集要求(有操作查看數據的權限),一般要求為管理員用戶角色權限,然后確定需要采集的數據頁面,即確定好采集URL地址,最后再按照要求進行采集參數設置(如采集某一年、某一地區)。數據采集過程是按照任務調度的分發進行數據采集執行,核心操作為按照采集參數設置,組裝HTTP協議請求報文向后臺應用服務請求,后端服務監聽到前端請求后作出響應并返回數據,采集程序再接到返回數據后按照數據解析規則進行數據解析,整個采集過程都將進行URL隊列的管理及采集日志記錄;數據采集過程最后把采集并解析的業務數據、任務調度的URL隊列信息及采集日志統一存儲至數據庫表中。
基于HTTP協議的業務系統數據采集原理如圖4數據采集基本流程圖所示,核心步驟主要包括HTTP協議請求報文、HTTP響應報文及數據解析過程。
根據系統數據采集采集操作、數據采集、任務調度及數據存儲4部分功能結構相關關系,系統總體流程執行如下:
(1)以業務系統的合法、權限滿足用戶賬號登錄相應業務系統,確定需要采集數據的頁面URL地址,通常業務系統架構多數采用框架進行的多頁面集成,所以采集頁面對應的URL地址一般為數據查詢列表的查詢按鈕事件連接。
(2)按照采集頁面的查詢參數進行采集參數設置,如時間、區域等參數,一般為全數據采集,確定參數后進行進行HTTP請求報文(從客戶向服務器發送的請求報文)組裝,HTTP請求報文由請求行(request line)、請求頭部(header)、空行和請求數據4個部分組成。

圖4:數據采集基本流程圖
(3)組裝好請求報文后,客戶端向服務的發送報文請求,其根本操作就是按照請求報文內容的請求對應的URL地址發送去搬過去,URL地址和報文頭的Host屬性組成完整的請求URL。
(4)服務器端的響應報文,系統后臺服務按照客戶端請求返回響應報文,HTTP響應也由三個部分組成,分別是:狀態行(statusline)、 消 息 報 頭(headers)、 響 應 正 文(response-body)。
(5)頁面表單數據解析操作就是針對響應報文返回的響應正文進行數據解析,一般簡單時直接用正則表達式對整個響應報文進行匹配提取出對應信息,但我們業務系統的數據庫內容一般都是批量操作的,返回的數據均是整個數據庫中存儲對應數據表的全量數據,所以用解析HTML的方法解析。
(6)數據解析完畢后,按照業務列表即表頭標識把對應列頁面數據存儲至數據庫中,同時進行相關日志記錄,并把采集的URL地址及參數信息同時記錄存儲至數據庫日志表中。
(7)重復以上步驟(2)-(6),直至數據采集完畢,則數據采集程序結束。
在數據采集過程中,由于目前很多業務系統為了數據響應的及時性,會按照頁面列表顯示的條數進行指定數據行數的返回,此時要特別注意進行“下一頁”的URL繼續采集,直至“最后一頁”采集完畢。
HTTP響應報文數據解析主要是對響應正文(response-body)內容進行解析,其內容為標準的HTML標記語言格式,由規范的
HTML標簽組成,數據解析主要針對標簽內容。營銷管理系統中查詢轉變用戶清單時,顯示如圖5營銷管理系統轉變用戶清單列表圖系統列表界面所示。
分析報文中的的標簽內部內容其內部嵌套有標簽,詳細標簽內容如下:


圖5:營銷管理系統轉變用戶清單列表圖
依據其標簽規范,我可以發現其列表內容均為標簽的內集合里面,并根據其內部的標簽獲取對應的列值。在解析數據時,首先遍歷集合,其次嵌套遍歷標簽集合,同時按照一定的規則規律過濾掉不符合的
另外,pathon語言提供的許多工具可以行輕松的HTTP協議的響應報文內容解析操作,如導入beautifulsoup4庫,可以把HTTP響應報文格式為HTML文檔,遍歷此文檔,可以從中挑選出特定的標簽;導入re(正則)庫可以很容易的實現和正則相關的驗證。例如,判斷一個字符串是否可以匹配某個正則表達式、從一個字符串中找出所有的能夠匹配的字符串等。
數據存儲前需要進行對應數據庫表的設計,表名可按照業務系統列表內容進行命名,數據庫字段名則按照業務系統列表值的分析,可以直接按照列表頁面(圖5營銷管理系統轉變用戶清單列表圖)的列表頭(如序號、用戶編號、用戶名稱等)進行表字段名的直接英文翻譯命名。后續按照開發的應用進行數據的直接插入數據庫表中進行存儲,實現業務系統頁面數據的獲取,為下一步的數據集成共享提供對應業務系統的數據支撐。
本文對基于HTTP協議的業務系統網頁數據采集做頂層的研究與設計,并結合電力營銷管理系統進行數據的抓取和解析分析,為基于B/S架構的業務系統不通過接口或數據庫直接訪問的方式實現系統間的數據集成共享,有效解決因業務系統間安全規范、網絡不允許等客觀條件、或業務系統建設方不配合開放接口時,實現業務數據間的數據集成共享問題。