2011年12月31日 星期六

HTML Parser ( 剖析器 ) - HtmlAgilityPack ( HAP )

網頁探勘 (Web Mining) 是使用資料探勘技術由網際網路的文件及服務中發現並擷取出隱含的資訊。

我在網頁探勘中下了許多功夫,例如之前發表一篇 Regular Expression 與 C# Regex 教學 的文章,頗受歡迎。

由於 Regular Expression 並不好學,需要熟悉 Regular Expression 語法邏輯與組合去對應網頁語法與結構,才能將有用資料擷取出來分析,甚至放到資料庫儲存,已供往後做成報表研究。但是如果網頁結構改變,整個 Regular Expression 語法都要改變,而每一條語法並不是這麼好下,可能要花一些時間去瞭解網頁結構的狀況而定。

HtmlAgilityPack 套件,類似視窗程式的 WebBrowser 一樣,先載入它的網站狀況,它可以讓剖析鬆散格式 HTML 的工作就像剖析 XML 一樣簡單,只要依照他網頁結構找出它的 xpth,便可輕鬆擷取出資料。

首先,先到Html Agility Pack下載 dll,目前版本為 1.4.0。

在程式碼中,先加入這個 dll,接著再 *.cs 引用:
using HtmlAgilityPack;

目前我拿奇摩首頁 ( http://tw.yahoo.com/ ),做擷取範例,抓出所有連結的 html 語法。以下為範例程式碼:

string url = "http://tw.yahoo.com/";

HtmlWeb web = new HtmlWeb();
HtmlDocument doc = web.Load(url);

HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//a");

foreach (HtmlNode node in nodes)
{
    Console.WriteLine(node.OuterHtml);
}

xpath 語法參考:XPath 語法

這樣變輕輕鬆鬆地擷取出所有連結。

歡迎大家來討論,目前我也正在學習中。

回目錄
回首頁



沒有留言 :

張貼留言

Related Posts Plugin for WordPress, Blogger...