2012年9月30日 星期日

HTML 內文擷取

各式各樣網頁文字內容的掘取是做各種後續處理 (例如撰寫 search engine 的 crawler) , 分析的第一步, 一般人想到掘取一個網頁內容最直覺的想法就是發送 HTTP GET, 再透過一些 meta tag , DOM processing library 來將回傳的 html 中之標籤移除 (透過 beautifulsoup 之類的 html cleaning tool); 然而, 在近代的網頁中, 例如論壇或部落格, 真正重要/有意義的內容往往只佔整個頁面的一小部分 (只保留 user generate article, 而不是廣告 , 留言, social widget,  tags , button 等與主要文章不相關的 text)

另外, 除了便於分析研究等相關工作外, 網頁內容掘取的技術也被 apply 到許多應用上 , 例如可以將網頁文字內容擷取並美觀的應用 Readability , 可以讓使用者將有興趣閱讀的網頁內容 "稍後再看" 的 pocket app ; rss/news reader app 如 pulse , feedly , 甚至是為了讓現有網頁能夠在 mobile 端被適當的呈現給使用者

網路上有人整理了幾種目前解決 html content extraction 演算法的比較 : http://tomazkovacic.com/blog/56/list-of-resources-article-text-extraction-from-html-documents/ 裡頭整理了目前學界在此問題上的 state-of-arts solutions.

而對於開發者來說, 其實大可不必要花太多時間研讀上述所提及的演算法 ; 開發出 readability 的 arc90 公司除了提供 API 之外也將其 source code 開放源碼, 目前更陸續被 port 在許多不同的語言 , 例如 php , ruby 與 python , java 等等版本 , 讓使用者可以自行選擇適合的

除了 readability 的 solution 外, 以下整理出一些其他的 solutions :

Google mobilizer : http://www.google.com/gwt/n
Pocket API 提供的 parser : http://getpocket.com/api/
fivefilters  : http://fivefilters.org/content-only/
viewtext : http://viewtext.org/
Goose : http://jimplush.com/blog/goose





沒有留言:

張貼留言