當前位置:編程學習大全網 - 源碼下載 - 石油市場價格抓取算法

石油市場價格抓取算法

由於網站上的石油市場價格歷史數據的時間粒度從年壹直精確到日,所有的下載靠人工完成是很困難的,而且由於下載到本地之後的表格字段並不規範,所以必須要根據數據庫字段的要求對字符串和Excel表格操作,使之規範化後再入庫。其難點在於實現石油市場價格的自動抓取完成對數據源的自動下載,數據源的自動更新,與管理平臺的無縫鏈接,以及ActiveX 插件的制作。

5.3.1.1 數據源的自動下載

石油市場價格數據有3個數據源,包括美國能源部能源信息署(EIA)、《華爾街日報》(WJS)和中石油(CNPC)的數據。這些數據源皆為互聯網上的資源。針對3個不同的數據源的特點,采用遠程自動下載及規範化,以及基於正則表達式的網頁數據自動抓取兩種不同的技術完成。

(1)遠程自動下載及規範化

對於美國能源部網站的油價歷史數據,通過設計自動下載引擎,完成對其歷史油價數據的自動遠程下載,按照指定路徑保存到本地,並將每次下載的結果保存到數據庫下載日誌表;將下載下來的數據進行清洗、轉換並上載到中心數據庫。

(2)基於正則表達式的網頁數據自動抓取技術

由於大部分網頁數據並沒有提供下載的通道,而且油價數據同股價數據壹樣更新頻率很高。因此需要對網站上的數據進行基於正則表達式網頁數據自動抓取。華爾街油價數據、美國能源部上的油價事件、中石油網頁上的油價數據,均需要通過正則表達式的網頁自動抓取功能來實現。

網頁抓取需要解決的問題:

1)得到需要抓取的網頁的地址列表(URL);

2)根據網頁的地址去請求,得到網頁的內容;

3)分析網頁(HTM L)的結構,並提取出需要的內容,即使用網頁結構化信息抽取技術或元數據采集技術。可以使用基於字符串查找定位和基於DOM(Document Object Model)結構的分析;數據抓取結構體系,如圖5.27所示。

圖5.27 B/S網頁事件抓取結構體系

正則表達式的網頁數據自動抓取技術涉及網頁源碼數據的本地化操作,裝載源碼數據控件的選擇,相關信息源碼的抓取,源代碼的去行操作,數據中含有超鏈接和字體變換的HTML標簽元素的去除,應用零款斷言和截取子字符串等字符串函數的方法來抓取數據以及數據入庫這些操作(圖5.28)。

圖5.28 基於正則表達式的網頁信息抓取過程

5.3.1.2 數據源的自動更新

當完成對歷史數據的初始化之後,需要設計監控引擎,監控網站數據源的更新情況,以決策是否執行增量下載任務。其監控引擎采用實時監控技術以及周期性檢測技術。當執行增量下載任務之後,需要對下載數據的有效性和完整性進行檢查,指定的數據源要定格式、定期進行更新。數據源的自動更新,主要依據站點在對數據更新之後系統能及時發現並自動快速地獲取更新。從站點上獲取更新的手段,涉及數據更新後的更新超鏈接、按鈕變化後的觸發網址的變動,分析網址來獲得更新等,如:《華爾街日報》的期貨油價就是按照將日期寫進網址來制作更新的;若是周末或是節假日期間網址同樣存在只是網頁上無相關內容,於是便要考慮此次更新獲得的數據是否有效和存在;另外在處理如AJAX 等網址不變的網絡站點或者站點的更新不能從網址上得到解釋時,使用針對網頁的高級字符串操作來獲取更新,前述的正則表達式便是最有效的方法之壹。

5.3.1.3 與管理平臺的無縫鏈接

管理平臺的功能是要使下載、更新的多個任務按照程式的設計,分配到計算機的幾個線程中,通過對線程的調度,達到自動下載和更新的有效管理。為此需要設計審核功能、日誌功能、重試次數的閾值,以及開啟多個Excel進程的功能。通過審核功能,可以查明自動下載過程中的異常,便於進行人工幹預;通過日誌功能,可以幫助我們依據日誌對任務執行中的錯誤進行追蹤和對出錯原因進行判斷;通過設置重試次數閾值,可以實現任務執行失敗後重試;通過開啟多個Excel進程的功能,可以實現EIA的Excel數據自動讀取和轉換。

5.3.1.4 預測程序ActiveX插件的制作

由於油價預測程序是基於C/S架構開發,要將程序發布到B/S架構必須使用插件技術從服務器端向客戶端安裝預測程序的核心部件,以達到對油價模型更新而不用再單獨編寫程序的目的,這樣就保證了程序的完整性和解決方案之間的良好銜接。

創建ActiveX插件的過程,必須讓系統提供壹個接口使得插件能夠完整地從後臺鏈接到前臺。因為工程無法生成tlb文件,沒有tlb文件也就意味著註冊失敗,以及dll文件或ActiveX 控件在客戶端無法使用。創建的類就是通過代碼的方式將dll文件在客戶端註冊,生成tlb文件,使得.exe程序能夠在B/S體系下進行操作。

  • 上一篇:html下拉列表怎麽做?
  • 下一篇:zljc指數的使用技巧
  • copyright 2024編程學習大全網