第三章 一個以賽局理論為基礎的網頁主題區塊擷取演算法
3.2 GRAB 演算法
3.2.1 GRAB 演算法步驟 1:轉換(Transformation)
一般的 HTML 網頁,可以先經由轉成 XML 格式之 XHTML,處理掉 HTML Tag 的 缺漏問題,再清除不必要的 tag,例如 JavaScript、註解等資訊後,轉換成 DOM Tree 的 樹狀架構。如圖 8 所示:
圖 8、網頁轉換成 DOM Tree 架構
DOM Tree 架構就代表網頁的階層架構,其中每一個節點都是一個 HTML Tag。但 光是從 Tag 無法正確的取出網頁的資料,而是需要取出完整的子樹出來,才能得到一塊
有意義的網頁區塊資訊。如圖 8 所示,若只取出<TD>這一個節點的內容,並無其他意 義;若是取出包含<TD>之下的整棵子樹,亦即取出<TD> <A …> <A …> <A …> <A …>
<A …> </TD>就相當於擷取出這個表格的一個儲存格的內容,這就有意義了。因此在本 論文中,要取出某個節點的內容,指的就是擷取出該節點之下的整棵子樹。
在 W3C 的 HTML 規格書中,HTML DOM node 可分成三種:
(1)Insignificant node
無法在瀏覽器上顯示出來的節點。此類的節點包括只含有空白的節點、換段符號、
等等,例如註解文字、隱藏的 tag(例如<INPUT type=hidden>)等等。值得注意的 是<BR>並不是 Insignificant node,它是屬於 line-break node。
(2)Inline node
會影響文字顯示外觀的 html tag,包括:<A>、<ACRONYM>、<ABBR>、<B>、
<BIG>、<CITE>、<CODE>、<DEL>、<DFN>、<EM>、<FONT>、<I>、<INPUT>、<INS>、
<NOBR>、<KBD>、<Q>、<SAMP>、<SMALL>、<STRONG>、<SUP>、<SUB>、<TT>、
<U>、<VAR>等。
(3)Line-break node
既不屬於 Insignificant node,也不屬於 Inline node 的節點,就歸類為 Line-break node。
在本論文中,為了更明確地分辨節點的屬性及階層關係,因此將 W3C 定義的 Line-break node 擴充為以下兩種節點:
(1)Visible node:可以直接在瀏覽器上看到的節點,其下沒有子節點。包括以下幾個:
Text node:僅包含文字內容的節點
Url node:具有超連結功能的節點,如:<a href=”…”>
Image node:其內容為圖片、或 Flash 等能夠直接在瀏覽器上看見的物件
separate node:HTML tag 本身就具有分隔效果,如:<hr>
(2)Format node:節點內包含多個子節點,並由特定格式來呈現。包括:
Free format node:包含多個 Visible node,且 Visible node 之間不相似。例 如同時包含圖片和文字的節點。
Area format node:本身具有區隔性,能將內容做表格式的呈現,如:
<table>、<div>、<span>、<form>等
List format node:包含多個 Visible node 或 Format node ,且是以相似格式 重複出現
Combined format node:包含多個 Visible node 或 Format node
圖 9 描述了將網頁元件處理成 XHTML 的過程。首先,一個網頁會包含著各種元件,
其中註解、JavaScript、CSS 樣式等非必要的資訊,要先在這個步驟中拿掉,僅留下 HTML Tag。接下來,將 HTML 轉換成符合 XML 規範的 XHTML 格式。本論文是利用 Tidy 套 件來處理,Tidy 可在各種語言上執行,能夠自動判斷及修復容易寫錯的 HTML 標籤,
不論是標籤的順序,或是標籤是否有結尾等等,接著可以透過標準的轉譯方式,將合法 的 HTML 轉換成為 XML 格式的檔案。
此階段產出的合法 XHTML 檔,就是一個 DOM Tree 的架構。一個合法的 XHTML 檔,會有一個唯一的根節點,其下有數個子節點,每個子節點之下還有其他子節點。相 對於一棵 DOM Tree,就如同樹根、子樹節點、樹葉節點等概念。
在轉換成 XHTML 的過程中會為每個節點加入兩個屬性:ccmID(Check Content for Mark Identify)及 nodeType。ccmID 的值從 1 開始遞增,並且是從<BODY>標籤開始寫入,
因此所有 DOM Tree 的根節點都是<BODY>。而 nodeType 則是記錄該節點的型態是上述 HTML DOM node 的哪一種。
(a) (b) (c)
圖 9、原始網頁與 HTML/XHTML 格式之對應