很久之前參加了個比賽,實現了一個提取論壇內容的演算法。

一、挖掘目標

將論壇之中的內容按以下方式存儲:

二、總體流程

總體流程圖

三、主要貢獻

本文做的主要貢獻是實現了根據樓層相似結構地位並分割樓層。

我們查看BBS論壇頁面的網頁結構發現以下特徵:

1.在同一個web頁面中,每個樓層所在的DOM結構的節點的子樹都很相似。

2.不同樓層都位於同一個父節點下面。

3.不同樓層之間為兄弟節點。

如下圖所示:

樓層分割演算法具體步驟:

1.篩選標籤

首先將web頁面轉化為DOM結構,找出不可能成為節點的標籤並剔除例如:

<link><head><p>......

對於一個帖子而言,有這麼幾方面重要的內容:作者、時間、正文內容,這三個方面之中,作者、正文內容結構是難以預測的,但是時間我們可以通過使用正則表達式進行匹配。因此,我們遍歷出所有節點,將節點中不含有時間的節點剔除。

另外我們發現,一個樓層塊中必定有很多的標籤塊,如作者、時間、內容等等,我們對每個樓層下的節點進行遞歸循環,發現樓層下的標籤數量比較多,因此我們設置一個閾值進行過濾。將的標籤數目少的節點過濾。

2.定位樓層

經過以上幾個步驟之後,我們將每一塊與他的所有兄弟節點進行比較,找到相同的塊,並作為一個列表存儲。如下圖:

將2、3與4進行比較,8、9、10進行比較,最終我們會得到幾個列表:

[2] [3] [4] [5,6] ...[8,9,10]...

列表內節點個數最多的為樓層序列。


推薦閱讀:
查看原文 >>
相關文章