彭 偉
(武漢城市職業(yè)學(xué)院 電子信息工程學(xué)院,湖北 武漢430064)
互聯(lián)網(wǎng)Web 頁(yè)數(shù)據(jù)信息挖掘是一項(xiàng)非常重要且具有大量現(xiàn)實(shí)應(yīng)用的技術(shù),特別是基于HTML 的Web頁(yè)已經(jīng)成為絕大多數(shù)程序的人機(jī)界面,從Web 頁(yè)挖掘數(shù)據(jù)已經(jīng)成為最重要的信息獲取方式之一。對(duì)于目前為數(shù)眾多的互聯(lián)網(wǎng)地址免費(fèi)發(fā)布的城市氣象信息,它們均具有相對(duì)穩(wěn)定的URL 地址,但其Web 頁(yè)數(shù)據(jù)信息卻表現(xiàn)為無(wú)結(jié)構(gòu)或半結(jié)構(gòu)狀態(tài)[1],對(duì)于氣象信息的提取可以面向順序文本通過(guò)正則表達(dá)式實(shí)現(xiàn),這種方式速度快,但容易產(chǎn)生噪聲信息。本文將基于. NET開(kāi)發(fā)平臺(tái),研究通過(guò)Microsoft mshtml DOM 接口[2-3]遞歸提取互聯(lián)網(wǎng)免費(fèi)發(fā)布的氣象信息程序算法,并給出通過(guò)取模及掛載第三方EXE 的方式將提取的氣象信息發(fā)布于LED 電子屏顯示的相關(guān)技術(shù)。
W3C 制定的文檔對(duì)象模型(Document Object Module,DOM)是一種獨(dú)立于平臺(tái)和具體編程語(yǔ)言的接口,它允許通過(guò)程序或腳本動(dòng)態(tài)訪問(wèn)及更新HTML、XHTML、XML 文檔對(duì)象,包括其內(nèi)容、結(jié)構(gòu)和樣式。DOM 把Web 文檔組織成DOM 樹(shù)結(jié)構(gòu)[4-5],其定義為:DOMTree= (Node,Relation);Node = (Node1,Node2,…,Noden),Nodei = (Name,Attribute,Semantics,Index),Relation 為 Node 之 間 的 關(guān) 系(Parent,Child,Sibling)。DOM 樹(shù)的根結(jié)點(diǎn)只有一個(gè),由Document 接口管理,每個(gè)加載到瀏覽器的HTML 文檔都會(huì)成為Document 對(duì)象。DOM 樹(shù)中的各結(jié)點(diǎn)對(duì)象均可被尋址和操縱。DOM 規(guī)范在Node 接口中定義了12 種不同的結(jié)點(diǎn)類(lèi)型,操作HTML 文檔的幾個(gè)重要結(jié)點(diǎn)類(lèi)型如表1 所示。
表1 DOM 結(jié)點(diǎn)類(lèi)型(部分)
為訪問(wèn)Microsoft mshtml 所提供的接口功能,.NET封 裝 了 HtmlDocument、HtmlElementColletcion 及HtmlElement 等類(lèi),但這些封裝僅提供了DOM 的部分功能且并不完善。本節(jié)將通過(guò)mshtml 接口實(shí)現(xiàn)對(duì)Web 頁(yè)結(jié)點(diǎn)的訪問(wèn),在.NET 平臺(tái)使用mshtml DOM 接口時(shí)需要添加引用Microsoft. mshtml,并添加using mshtml 語(yǔ)句,所引用的文件Microsoft. mshtml. dll 處于.NET 安裝目錄下。表2 給出了mshtml DOM 開(kāi)發(fā)涉及的相關(guān)接口。
表2 Microsoft mshtml DOM 開(kāi)發(fā)涉及的相關(guān)接口
為解析以HTML 方式提供的氣象信息Web 頁(yè),現(xiàn)以URL:http://weather. news. qq. com/inc/07_dc125.htm 為例進(jìn)行分析研究,它是騰訊公司發(fā)布的北京市氣象信息地址,可以實(shí)時(shí)查看北京當(dāng)天的詳細(xì)氣象信息及近3 天的氣象預(yù)報(bào)信息。在C#.NET 開(kāi)發(fā)平臺(tái)設(shè)計(jì)模式及源模式下打開(kāi)該Web 頁(yè)面的效果及經(jīng)過(guò)逐層剖析HTML 標(biāo)記所構(gòu)造的樹(shù)型結(jié)構(gòu)如圖1 所示,其中樹(shù)型結(jié)構(gòu)以<html >為根結(jié)點(diǎn)(更頂層為Document結(jié)點(diǎn)),所有氣象信息均駐留在樹(shù)中由根結(jié)點(diǎn)到各葉子結(jié)點(diǎn)的各條路徑上最末端的<td >標(biāo)記內(nèi)及<td >之下的<strong >、<a >等標(biāo)記內(nèi),部分信息內(nèi)有<br>標(biāo)記,另外還有部分<td >標(biāo)記內(nèi)容為空??疾靾D1所示W(wǎng)eb 頁(yè)樹(shù)型標(biāo)記結(jié)構(gòu),并參考DOM 樹(shù)與結(jié)點(diǎn)定義可知,提取該Web 頁(yè)數(shù)據(jù)信息的過(guò)程就是通過(guò)DOM 提供的接口提取樹(shù)中相應(yīng)結(jié)點(diǎn)文本信息的過(guò)程[6-9]。
基于DOM 接口提取Web 頁(yè)數(shù)據(jù)信息時(shí),需要從頂級(jí)根結(jié)點(diǎn)(即文檔對(duì)象)開(kāi)始,為了獲取mshtml.HtmlDocument 頂級(jí)文檔對(duì)象以便進(jìn)行編程訪問(wèn),可通過(guò)WebBrowser 實(shí)例(本文定義為tmpIE1)加載Web 頁(yè)然后獲取文檔對(duì)象,其創(chuàng)建及載入U(xiǎn)RL 的語(yǔ)句如下:
string URL = @“http://weather... /inc/07_dc125.htm”;
WebBrowser tmpIE1 = new WebBrowser();
tmpIE1.Navigate(URL);
執(zhí)行Navigate 以后并不能立即從加載的HTML 文檔提取數(shù)據(jù),因?yàn)榇藭r(shí)尚不能保證整個(gè)文檔已被完整加載。對(duì)此可有如下兩種方法進(jìn)行處理:
(1)循環(huán)查看tmpIE1 的就緒狀態(tài),未就緒則等待:
while (tmpIE1. ReadyState ! = WebBrowserReadyState.Complete)Application.DoEvents();
(2)為tmpIE1 的DocumentCompleted 事件添加委托:
tmpIE1.DocumentCompleted + =
new WebBrowserDocumentCompletedEventHandler(
tmpIE1_DocumentCompleted);
文檔完整載入后所執(zhí)行的程序如下:
HTMLDocument mhtd = (HTMLDocument)
(tmpIE1.Document.DomDocument);
if (mhtd != null){/* 調(diào)用下一節(jié)討論的遞歸算法* /
/* Domx1((IHTMLDOMNode)mhtd.firstChild);* /
/* Domx2 ((IHTMLElementCollection ) mhtd. body.children);* /
/* 輸出氣象信息文本str* / }
上述代碼可放在方法(1)所示代碼之后,也可放在方法(2 )所定義的委托內(nèi)。注意其中HTMLDocument 所表示的是mshtml. HTMLDocument。此 外,文 檔 對(duì) 象 還 可 以 通 過(guò) mshtml.HTMLDocumentClass類(lèi) 及IHTMLDocument2、IHTMLDocument4 接口創(chuàng)建。
DOM 所定義的結(jié)點(diǎn)不僅包含所有的HTML 標(biāo)記,對(duì)于其中的文本內(nèi)容,DOM 也將其單獨(dú)定義為T(mén)ext 結(jié)點(diǎn)類(lèi)型,觀察圖1 可知該Web 頁(yè)的所有氣象信息文本正 好 全 部 處 于 Text 結(jié) 點(diǎn) 內(nèi)。顯 然,通 過(guò)IHTMLDOMNode 結(jié)點(diǎn)接口提供的編程能力,特別是其重要屬性firstChild 及nextSilbling,使用遞歸即可實(shí)現(xiàn)對(duì)整個(gè)樹(shù)的先序遍歷,遍歷過(guò)程中每當(dāng)遇到nodeType屬性值為3(即TEXT_NODE)的Text 結(jié)點(diǎn)時(shí)即取得其結(jié)點(diǎn)值(nodeValue),遞歸結(jié)束時(shí)即可取得全文信息。下面給出的遞歸算法Domx1 基于DOM 樹(shù)結(jié)點(diǎn)接口實(shí)現(xiàn)對(duì)全文信息的提取:
圖1 氣象信息Web 頁(yè)HTML 樹(shù)型標(biāo)記結(jié)構(gòu)圖
void Domx1(IHTMLDOMNode Node){
if (Node != null){
if (Node.nodeType = = 3)//為T(mén)ext 結(jié)點(diǎn)
str.Append(Node.nodeValue.ToString());
Domx1(Node.firstChild);//遍歷子樹(shù)結(jié)點(diǎn)
Domx1(Node.nextSibling);//遍歷兄弟結(jié)點(diǎn)
}}
其中str 用于保存提取的氣象信息文本:
StringBuilder str = new StringBuilder();
點(diǎn)擊Web 氣象信息樹(shù)型提取算法測(cè)試界面圖中的“全文提取(1)”時(shí)可觀察到Domx1 的提取效果,遞歸共遍歷124 個(gè)樹(shù)結(jié)點(diǎn)(注意圖1 未繪制出<br >,<!--注釋-->等結(jié)點(diǎn)),限于篇幅,本文略去樹(shù)型視圖構(gòu)建代碼及HTML 標(biāo)記顯示代碼。
為提取圖1 中的氣象信息,還可以基于IHtmlElement 及IHtmlElementCollection(元素接口及元素集合接口)實(shí)現(xiàn)。雖然所有氣象信息均處于圖1 中的<td >元素結(jié)點(diǎn)之下,但遍歷過(guò)程中并不能在每次遇到<td >元素時(shí)即通過(guò)innerText 提取它所包含的文本,因?yàn)榻Y(jié)點(diǎn)樹(shù)中多個(gè)<td >元素存在嵌套,其下有<table >及更底層的<td >等元素,在遞歸遍歷過(guò)程中,只能提取最底層<td >元素的innerText 屬性值。為解決這一問(wèn)題,算法中引入了全局元素變量msLtd,其定義為HTMLElement msLtd = null,用于保存最近<td>結(jié)點(diǎn)。以下給出的Domx2 算法基于DOM 樹(shù)元素及元素集合接口實(shí)現(xiàn)全文信息提取:
void Domx2(IHTMLElementCollection Elems){
foreach (IHTMLElement elem in Elems){
if (elem.tagName.ToUpper()= =“TD”)msLtd=elem;
/* 遞歸遍歷當(dāng)前元素elem 的所有孩子元素* /
Domx2((IHTMLElementCollection)elem.children);
if (elem.tagName.ToUpper()= =“TD”&&
msLtd = = elem){str.Append(elem.innerText+“”);
msLtd = null;}}
DOM 元素結(jié)點(diǎn)的innerText 屬性功能非常強(qiáng)大,圖1 中<body >元素下子樹(shù)中的所有文本信息還可以?xún)H僅使用str. Append(mhtd. body. innerText)一次性提取,然而,實(shí)際上很多時(shí)候所需要的并不是全文信息,而是僅僅需要其中局部板塊的有效信息。
如果Web 頁(yè)所有內(nèi)容全部與氣象信息相關(guān),且全部需要提取,上述全文提取算法就能滿(mǎn)足要求,但實(shí)際應(yīng)用中遇到的Web 頁(yè)往往含有大量無(wú)關(guān)信息,對(duì)此還需要進(jìn)一步重新設(shè)計(jì)實(shí)現(xiàn)局部信息的提取算法,下面分別針對(duì)較為簡(jiǎn)單的及相對(duì)復(fù)雜的頁(yè)面進(jìn)行討論:
(1)從結(jié)構(gòu)及內(nèi)容相對(duì)簡(jiǎn)單的頁(yè)面提取。仍以騰訊公司的07_dc125.htm 頁(yè)面為例,現(xiàn)假設(shè)僅需提取近3 天的氣象信息,考察圖1 樹(shù)型結(jié)構(gòu)可知,在遞歸遍歷過(guò)程中遇到Text 結(jié)點(diǎn)且nodeValue 為當(dāng)天日期時(shí),逐一提取當(dāng)前及此后遇到的所有Text 結(jié)點(diǎn)值,如此即可得到近3 天的氣象信息,類(lèi)似的,還可以通過(guò)IHTMLDOMNode 結(jié)點(diǎn)接口的lastChild 屬性通過(guò)循環(huán)定位于右子樹(shù)的第1 個(gè)(或第2 個(gè))<tr >結(jié)點(diǎn),然后以之為根調(diào)用遞歸算法Domx1。以后者為例,其具體實(shí)現(xiàn)如下:
IHTMLDOMNode Node = mhtd.lastChild;
while (Node != null){if (Node.nodeName.ToUpper()
= =“TR”)break;else Node = Node.lastChild;}
Domx1(Node);//以<tr >為根調(diào)用Domx1
/* 遞歸結(jié)束后輸出近3 天的氣象信息文本* /
此外還可選擇使用元素接口IHTMLElement 首先定位于樹(shù)型結(jié)構(gòu)最右端的<tr >元素,然后通過(guò)innerText 一次提取近三天的氣象信息,其具體實(shí)現(xiàn)如下:
IHTMLElement le = null;//當(dāng)前層最右元素結(jié)點(diǎn)
while (Elems.length != 0){//循環(huán)搜索最右的<tr >
foreach (IHTMLElement elem in Elems)le = elem;
if (le.tagName.ToUpper()= =“TR”)break;
Elems = (IHTMLElementCollection)le.children;}
if (le != null)/* 由le.innerText 獲取所需要信息* /;
(2)從結(jié)構(gòu)復(fù)雜且含有大量無(wú)關(guān)內(nèi)容的頁(yè)面提取。以從中國(guó)天氣網(wǎng)提供的北京市氣象信息頁(yè)中提取指定的局部板塊氣象信息為例,其URL 為:
http://www.weather.com.cn/weather/101010100.shtml
該Web 頁(yè)結(jié)構(gòu)復(fù)雜,除了含有當(dāng)天與后3 天以及未來(lái)4-7 天的氣象信息以外,其間還夾雜有宣傳廣告、各類(lèi)鏈接等大量無(wú)關(guān)內(nèi)容,當(dāng)直接以Domx1 遞歸算法對(duì)該Web 頁(yè)進(jìn)行全文提取時(shí),共檢索到1406 個(gè)DOM樹(shù)結(jié)點(diǎn),限于篇幅,通過(guò)檢索構(gòu)建的圖2 右邊所示樹(shù)型視圖僅截取了與氣象信息相關(guān)的部分內(nèi)容。
圖2 中國(guó)氣象網(wǎng)北京市氣象信息頁(yè)標(biāo)記對(duì)照?qǐng)D(部分)
現(xiàn)假設(shè)需要提取的是圖2 所示近4 天的氣象信息,觀察其右邊由Domx1 所構(gòu)建的樹(shù)型視圖可知,它們與5 個(gè)<table >結(jié)點(diǎn)對(duì)應(yīng),其中第1 個(gè)為表頭,后4個(gè)則分別對(duì)應(yīng)4 天的信息,且每個(gè)<table >結(jié)點(diǎn)前均有一注釋結(jié)點(diǎn),在Domx1 中加入注釋結(jié)點(diǎn)詳細(xì)信息顯示功能,可觀察到它們分別為<!--day 1-->~<!--day 4-->,其后的數(shù)字8 是#comment 結(jié)點(diǎn)的類(lèi)型值(nodeType),定位于該Web 頁(yè)<!--day 1-->注釋附近時(shí),可找到如下內(nèi)容(部分):
<div class=“weatherYubaoBox”>
<table class =“tableTop”width =“100%”border =“0”cellspacing=“0”cellpadding=“0”>……//表頭(略)
<!--day 1-->…//當(dāng)天開(kāi)始近4 天的天氣信息(略)
<table class=“yuBaoTable”width =“100%”border =“0”cellspacing=“0”cellpadding =“0”>……//共4 個(gè)<table >(略)
<div class=“weatherYubao”id=“weatherYubao2”>
<h1 class=“weatheH1”>未來(lái)4-7 天….. </h1 >
<div class=“weatherYubaoBox”><!---day 5-->…
觀察圖2 及上述相關(guān)HTML 標(biāo)記可知,提取近4天信息時(shí)可先遞歸遍歷至comment 結(jié)點(diǎn)<!--day 1-->,然后連續(xù)提取Text 結(jié)點(diǎn)信息,直至遇到<div >結(jié)點(diǎn),該結(jié)點(diǎn)實(shí)際上是后4 天氣象信息的起始結(jié)點(diǎn)(即后4 天氣象信息板塊的頂層父結(jié)點(diǎn))。綜合上述分析,以Domx1 為基礎(chǔ)改寫(xiě)的提取近4 天氣象信息的遞歸算法Domx3 具體實(shí)現(xiàn)如下:
int flag = 0;//提取文本的控制標(biāo)識(shí)
void Domx3(IHTMLDOMNode Node){
if (Node != null && (flag = = 0 || flag = = 1)){
if (Node.nodeName = =“#comment”&&
Node.nodeValue.ToString()= =“day 1”)flag = 1;
if (flag = = 1 && Node.nodeName. ToUpper ()= =
“DIV”)flag = 2;
if (flag = = 1 && Node.nodeType = = 3)
str.Append(Node.nodeValue.ToString()+ “”);
Domx3(Node.firstChild);//遍歷子樹(shù)結(jié)點(diǎn)
Domx3(Node.nextSibling);//遍歷兄弟結(jié)點(diǎn)
}}
算法中的標(biāo)識(shí)變量flag 取值為0 ~2,分別表示允許遞歸遍歷(尚未到達(dá)<!--day 1-->)、允許遍歷并提取文本(在4 天的信息范圍內(nèi))、停止遞歸遍歷(遇到<div >結(jié)點(diǎn)),特別是當(dāng)其取值為2 時(shí),后續(xù)結(jié)點(diǎn)的遍歷將被跳過(guò)。
為適應(yīng)氣象信息發(fā)布網(wǎng)站頁(yè)面結(jié)構(gòu)可能變更的情況,公司研發(fā)帶氣象信息顯示功能LED 電子屏?xí)r可考慮將控制軟件讀取氣象信息的URL 地址固定設(shè)置為指向研發(fā)公司提供的URL,該URL 具備統(tǒng)一的、固定的、規(guī)范的格式,每當(dāng)源網(wǎng)站頁(yè)面結(jié)構(gòu)變化時(shí)研發(fā)公司只需要改寫(xiě)提取程序適應(yīng)新的Web 結(jié)構(gòu)即可。
(1)點(diǎn)陣字庫(kù)取模?;谌∧7绞桨l(fā)送LED 刷新顯示,需要獲取字符點(diǎn)陣數(shù)據(jù)。假定某LED 電子屏由微控制器(如Atmega128 或PIC18F452),多片74HC595 串 行 級(jí) 聯(lián)(提 供 列 碼)[10],74HC138/APM4953(提供行掃及驅(qū)動(dòng)),系統(tǒng)硬字庫(kù)由EEPROM提供,燒寫(xiě)于EEPROM 的字庫(kù)由HZK16(16* 16)與ASC(8* 16)兩個(gè)文件合并構(gòu)成,微控制器提取EEPROM 點(diǎn)陣時(shí),其偏移地址計(jì)算公式如下:
Offset漢字= (94* (* d-0xa0-1)+(* (d+1)-0xa0-1))* 32
Offset英文= 267616 +(* d)* 16
其中,d 為取字符指針。由于英文字庫(kù)燒錄于中文之后,后者添加了固定偏移量267616。根據(jù)偏移地址從EEPROM 讀取32 或16 字節(jié)數(shù)據(jù)即可分別得到中、英文字符點(diǎn)陣。取得的字庫(kù)點(diǎn)陣還需轉(zhuǎn)換為L(zhǎng)ED 點(diǎn)陣,圖3 以一個(gè)漢字為例給出了轉(zhuǎn)換示意圖。設(shè)源點(diǎn)陣與目標(biāo)點(diǎn)陣分別保存于32 字節(jié)的數(shù)組A、B,轉(zhuǎn)換時(shí)可將16* 16 字庫(kù)點(diǎn)陣分為上、下、左、右四塊(4 個(gè)8* 8 點(diǎn)陣)進(jìn)行,轉(zhuǎn)換算法具體實(shí)現(xiàn)如下:
for(i = 0;i <8;i+ +){for(j = 0;j <8;j+ +){
byte r = (byte)(0x80 >>i),c = (byte)(0x01 <<j);
for (k = 0;k <4;k+ +){/* 注意k >>1 <<4≠k <<3* /
if ((A [(j <<1)+ (k >>1 <<4)+ (k&1)]& r)!= 0)
B[i +(k <<3)]| = c;}}}
如果下位機(jī)沒(méi)有提供字庫(kù),點(diǎn)陣取模及轉(zhuǎn)換任務(wù)將由上位機(jī)完成,二者的點(diǎn)陣提取及轉(zhuǎn)換算法相似,主要差別是C#可通過(guò)FileStream 類(lèi)讀取點(diǎn)陣,而下位機(jī)如果沒(méi)有移植嵌入式操作系統(tǒng)及字庫(kù)文件,則需要通過(guò)接口程序從指定的EEPROM 偏移地址讀取。
(2)圖像或矢量字庫(kù)取模。為了使電子屏字符顯示更加清晰美觀,還可以選用TrueType 字體[11],它采用二次貝塞爾(Bézier)曲線及直線描述字體的外形輪廓,TrueType 字體文件用樹(shù)型表組織,包括文件頭、描述表目錄及一系列的描述表[12-13],文件格式非常復(fù)雜,驅(qū)動(dòng)開(kāi)發(fā)難度較高。上位機(jī)獲取矢量字體數(shù)據(jù)時(shí),可選用Graphics 實(shí)例方法將文本輸出到Form 窗體或PictureBox,然后通過(guò)getPixel 取得像素?cái)?shù)據(jù)并進(jìn)行轉(zhuǎn)換。此外還可以通過(guò)操作系統(tǒng)提供的字體與圖形API從矢量字庫(kù)提取或通過(guò)開(kāi)源字體操作函數(shù)庫(kù)Freetype提?。?4]。
為了使上位機(jī)軟件具備更好的兼容性,對(duì)于第三方開(kāi)發(fā)的提取任意Web 信息的軟件,上位機(jī)軟件不需要重新設(shè)計(jì)也能將該信息發(fā)送LED 電子屏顯示,此時(shí)可考慮在上位機(jī)軟件中開(kāi)發(fā)第三方EXE 的掛載功能。對(duì)于.NET 平臺(tái),其Process 類(lèi)可用于啟動(dòng)第三方程序,利用Windows API 可將啟動(dòng)的第三方程序界面(如氣象信息提取與顯示界面)設(shè)為掛到主屏內(nèi)的某個(gè)區(qū)域(即以之為Parent 窗口),這里所說(shuō)的主屏指上位機(jī)循環(huán)掃描并提取像素點(diǎn)陣以便發(fā)送LED 顯示的專(zhuān)用窗體(例如圖4 所示的LED_Form)。顯然,掃描主屏區(qū)域讀取的像素將包括掛載于主屏內(nèi)某個(gè)區(qū)域的第三方EXE 界面像素,例如圖4 中主屏下的顯示氣象信息的EXE 窗體(其FormBorderStyle 屬性為None)。在這種方式下,除了使用Process 類(lèi)以外,涉及的Windows API包 括: ShowWindow、 SetParent、 SendMessage、PostMessage、SetWindowPos 等,這 些 API 要 通 過(guò)[DllImport(“user32.dll”)]聲明。
圖4 通過(guò)掛載于主屏的EXE 實(shí)現(xiàn)氣象信息掃描顯示
上位機(jī)發(fā)送氣象信息時(shí),在. NET 平臺(tái)可通過(guò)SerialPort 類(lèi)(基于RS-232/485)或TCPClient 類(lèi)分別選擇串口或網(wǎng)口實(shí)現(xiàn),后者需要在電子屏微控制器應(yīng)用TCP/IP 協(xié)議棧,例如PIC + Microchip TCP/IP Stack、AVR+Ethernut TCP/IP Stack,或者基于ARM 微控制器移植帶以太網(wǎng)模塊的嵌入式操作系統(tǒng)等。此外還可選擇無(wú)線方式傳輸氣象數(shù)據(jù)[15]。
所提出的Web 氣象信息樹(shù)型提取算法所取得的氣象信息在取模及外掛EXE 兩種方式下發(fā)送LED 顯示,均通過(guò)了實(shí)測(cè)運(yùn)行,取得了很好的效果,驗(yàn)證了該算法及系統(tǒng)設(shè)計(jì)的可行性。本文的研究將為電子屏研發(fā)公司進(jìn)一步增強(qiáng)產(chǎn)品功能,充分挖掘網(wǎng)絡(luò)Web 氣象信息及其他相關(guān)信息,顯示于發(fā)布公共信息的LED 電子屏提供參考方案。
[1] 劉松業(yè). 正則表達(dá)式的Web 數(shù)據(jù)提取研究[J]. 電腦編程技巧與維護(hù),2008(16):89-91.
[2] Document Object Model[OL]. [2012]:http://en.wikipedia.org/wiki/Document_Object_Model.
[3] 劉 軍,張 凈. 基于DOM 的網(wǎng)頁(yè)主題信息的抽?。跩]. 計(jì)算機(jī)應(yīng)用與軟件. 2010,27(5):188-190.
[4] 張瑞雪,宋明秋,公衍磊. 逆序解析DOM 樹(shù)及網(wǎng)頁(yè)正文信息提?。跩]. 計(jì)算機(jī)科學(xué),2011,38(4):213-216.
[5] 李 霞,蔣盛益. 基于DOM 樹(shù)及行文本統(tǒng)計(jì)去噪的網(wǎng)頁(yè)文本抽取技術(shù)[J]. 山東大學(xué)學(xué)報(bào)(理學(xué)版),2012,47(3):38-42.
[6] 楊 俊,李志蜀. 基于DOM 的WEB 主題信息抽?。跩]. 四川大學(xué)學(xué)報(bào)(自然科學(xué)版)2008,45(5):1077-1080.
[7] 張?jiān)评?,?軍,劉海霞.. 一種基于DOM 的Web 關(guān)鍵信息提取方法[J]. 現(xiàn)代計(jì)算機(jī)(專(zhuān)業(yè)版),2011(12):1-6.
[8] 韓存鴿,燕 敏. Web 信息抽取方法研究[J]. 計(jì)算機(jī)系統(tǒng)應(yīng)用,2009(7):172-173,189.
[9] 彭祥禮,朱小軍,查志勇. Web 信息抽取和展現(xiàn)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 計(jì)算機(jī)系統(tǒng)應(yīng)用. 2012,10(2):23-26.
[10] 黃桂梅,劉永立. 小型LED 點(diǎn)陣屏實(shí)用軟件設(shè)計(jì)與實(shí)現(xiàn)[J]. 計(jì)算機(jī)測(cè)量與控制,2011,19(12):3165-3168.
[11] 陳文文,奚宏生. 嵌入式系統(tǒng)中的TrueType 字體驅(qū)動(dòng)[J]. 計(jì)算機(jī)工程,2010,36(7):257-259.
[12] 王詩(shī)彬,林聰仁.. 用于嵌入式系統(tǒng)的漢字點(diǎn)陣提取方法[J]. 電子技術(shù)應(yīng)用,2007(7):162-165.
[13] 張正華,徐云生. Windows 矢量字庫(kù)在大屏幕顯示中的應(yīng)用[J]. 電子工程師,2004,30(1):46-48,73.
[14] 黃秀珍,何加銘,邰曉英. 基于FreeType 嵌入式矢量字體引擎的研究[J]. 寧波大學(xué)學(xué)報(bào)(理工版),2010,23(4):58-61.
[15] 劉忠平,郭俊福. 基于GSM 短信無(wú)線式LED 氣象信息發(fā)布屏系統(tǒng)設(shè)計(jì)[J]. 氣象科技息,2007,35(2):303-306.