目前互連網上公布出來的本文提取演算法,大家可以綜合比較下,一起來測試下哪個更好用。 詞網--北京詞網科技有限公司 http://demo.cikuu.com/cgi-bin/cgi-contex 獵兔網頁本文提取http://www.lietu.com/extract/ PHP版網頁本文提取http://www.woniu.us/get_content_demo/ 網頁本文提取分析(DEMO)http://61.128.196.27/txt 個人認為http://61.128.196.27/txt 這個提取最牛,基本上無論什麼頁面都能提取出來,而且能有效保持原文風格、圖片、連結。
http://code.google.com/p/joyhtml/
看看這個效果不錯
http://www.likeshow.net/article.asp?id=92
我一年前寫的玩意 雖然不完善 但尚可用之在新聞和BLOG 論壇提取上 提取的本文對於BLOG和BBS包含評論及回複 具體原理也寫很清楚了
如題,想從html源碼中提取本文內容,<P></P>之間的內容,但是<P>的寫法不規則。除了Regex的方法,還有其它的提取方法嗎?謝謝!
最新下載
線上示範和最新下載:
http://www.shoula.net/ParseContent
http://www.pudn.com/downloads152/sourcecode/internet/search_engine/detail668443.html
Google Code開源網頁本文提取cx-extractor2010-05-19 12:31基於行塊分布函數的通用網頁本文抽取:線性時間、不建DOM樹、與HTML標籤無關
簡述:
對於Web資訊檢索來說,網頁本文抽取是後續處理的關鍵。雖然使用Regex可以準確的抽取某一固定格式的頁面,但面對形形色色的HTML,使用規則處理難免捉襟見肘。能不能高效、準確的將一個頁面的本文抽取出來,並做到在大規模網頁範圍內通用,這是一個直接關係上層應用的難題。
作者提出了《基於行塊分布函數的通用網頁本文抽取演算法》,首次將網頁本文抽取問題轉化為求頁面的行塊分布函數,這種方法不用建立Dom樹,不被病態HTML所累(事實上與HTML標籤完全無關)。通過線上性時間內建立的行塊分布函數圖,直接準確定位網頁本文。同時採用了統計與規則相結合的方法來處理通用性問題。作者相信簡單的事情總應該用最簡單的辦法來解決這一亙古不變的道理。整個演算法實現不足百行代碼。但量不在多,在法。
項目網址:http://code.google.com/p/cx-extractor/
演算法描述:基於行塊分布函數的網頁本文抽取演算法.pdf
歡迎大家提出意見~
http://www.ngiv.cn/post/204.html
VIPS演算法對搜尋引擎的意義
http://blog.csdn.net/tingya/archive/2006/02/18/601954.aspx
基於視覺的Web頁面分頁演算法VIPS的實現原始碼下載
http://blog.csdn.net/tingya/archive/2006/04/28/694651.aspx
作者資訊:飛躍,javascript教程-技術之家部落格的博主
http://www.madcn.net/?p=791
我這裡有個開源的項目,還不錯,你上googlecode搜尋joyhtml。
http://gfnpad.blogspot.com/2009/11/blog-post.html
下面幾個是一些開源的程式:
1.一個python的基於文本密度的程式:
http://ai-depot.com/articles/the-easy-way-to-extract-useful-text-from-arbitrary-html/
ps:裡面有bug,要稍加改動。 另外,對於沒有對html注釋部分進行處理
2.Java 開源項目: Gate
http://gate.ac.uk/
其實可以利用Dhmtl對象進行編程分析,已獲得所要的資料檔案,詳細請看我的程式
http://www.vbgood.com/thread-94788-1-1.html
http://download.csdn.net/source/568439
一.標題塊
l 分塊節點:td,div,h,span
l 一般位於Head/Title的位置
l 當前單元含有<h1>-<h3>,<b>,<i>,<strong>等標籤
l 樣式,一般class包含title,head等字元
l 文字長度,一般大於3個字元,小於35個字元
二.發表時間塊
l 分塊節點:td,div, span
l 文字長度,一般小於50個字元
l 包含日期格式(2010-08-09)的字串
l 包含以下關鍵字:來源,發表
三.主題塊
l 分塊節點:td,div
l HTML網頁中有一些特殊標籤,通常只出現在網頁主題塊中,如<P><BR>等。因此,主題塊中往往包含著特殊標籤。
l 主題塊內容含有較多的句子,因此具有較多逗號、句號等標點符號(>5)。
l 若從資訊量角度考慮,主題塊一般是含有較多文字資訊。
l 主題塊的 標籤密度=1000*標籤數/文字數 應在小於一個範圍。
l 主題塊的 文本密度=len(文本)/len(HTML代碼) 較大
l 不應該包含 “上一篇”,“下一篇”
l 包含以下字串的內容塊,判定為包含著作權資訊,需減權:“ICP備04000001號”,“著作權”,“Copyright”
l 主題塊序號在標題塊之下
l 主題塊序號在發表時間塊之下
l 主題塊序號在相關連結塊之上
四.相關連結塊
l 分塊節點:td,div
l 文字應為“相關連結”、“相關新聞”、“相關報道”等敏感詞,且串連比例很高。
l 連結數小於20
實現:
根據以上資訊塊特徵,採用特徵提權演算法,C#(3.5)編程實現,命名為QD本文提取組件。經測試,對Html格式規範的以文字為主的內容頁,正確提取率在85%以上,各大門戶的新聞頁面在95%以上。 例子下載(需要安裝Microsoft .NET Framework 3.5)
註:QD本文提取組件 不開源,需要源碼的朋友可選擇付費擷取。
這時挑選出的本文一般也就是到位了,但是問題是很可能在頭尾殘留了一些塊廣告。我認為這些塊廣告與本文中廣告有很大的不同。這些廣告的馬腳就是其父節點,它們的父節點要麼也包含了本文所在地區,也就是和本文平級,要麼本身就是本文所在地區的一個子節點,很難是本文節點本身的。那麼對疑似本文節點進行一次掃描,剔除那些父節點文字內容過大(包含了廣告以及本文,即和本文平級)的塊,也剔除那些父節點文字內容過小的塊。
經過這樣的處理,得到的內容基本上就是我們需要的本文了。下面就是要提取標題。
在代表整個網頁的document中掃描一次,尋找那些有font字型的,strong的,h1的,title的節點,提取他們的資訊。然後將得到的文字內容分詞,查驗分出來的詞有多少是被本文包含的,包含最多的一半就是標題。但是這裡要注意,有時候找到的節點本身是本文節點的子節點,那麼無論怎麼分,分出來都是完全包含的,所以要剔除那些本身是本文一部分的疑似標題。這樣做對大部分網頁也是有效了,但是對僅有的標題就在本文節點裡的那些頁面,目前為止我還沒有特別好的想法。
這些日子也研究了一些別人的論文,有很多思想都非常好,也有很多人想到用馬爾科夫,人工神經來訓練。也許以後我會考慮用用看吧。現在這樣也還可以,呵呵。
?
這個演算法我也寫了一下,不過是用C++寫的。
我不太懂樓上討論的分頁是什麼意思,我通過分析dom樹然後用文中提到的規則進行dom結點處理以及後續的處理。
我主要是想把網頁中的內容按網頁架構分開,把本文部分合在一起,然後用貝葉斯決策計算本文特徵支援率
提取網頁內容。
現在VIPS基本寫完。
但是卻也發現了些問題,
比如說有些結點的座標提取出來會有提取不出分隔條,這是因為有少數座標有些重疊。這裡涉及到一個座標的確定問題。
然後是結點分割規則問題,現在的頁面是大部分是通過DIV來組織頁面。而VIPS似乎更合適TABLE組織的頁面,我試過用TABLE組織的頁面,分得相當不錯。
另外,TINYA上面的翻譯似乎改了些規則,還有部分翻譯不是很準確。比如虛擬文本的定義部分與原文有些出入,不知道TINYA有沒有注意到。
最後,很感謝TINYA 對這個演算法的介紹。
另外,有對這個演算法感興趣的朋友希望能大家一起討論下