由於有網友問到使用HtmlAgilityPack 時遇到Big5編碼會找掛掉的這個問題,於是尋找了資料解決才有了這篇文章。
不過要感謝點部落的大大中已經有人找到解決的辦法~
感謝Pou與Mr.Big兩位前輩所寫的文章,實際時做過一遍後,並在這裡做個紀錄方便以後遇到時不會忘記。
前言
由於有網友問到使用HtmlAgilityPack 時遇到Big5編碼會找掛掉的這個問題,於是尋找了資料解決才有了這篇文章。
不過要感謝點部落的大大中已經有人找到解決的辦法~
感謝Pou與Mr.Big兩位前輩所寫的文章,實際時做過一遍後,並在這裡做個紀錄方便以後遇到時不會忘記。
使用WebBrowser類別
WebBrowser是一個把Html文件內容顯示在應用程式上的類別,換句話說就是可以開啟網路上的網頁內容,把網頁的內容顯示在你的應用程式中,而WebBrowser除了可以網路上的內容外,也可以自訂HTML文件先儲存在裝置中讀取並顯示在你的WP上,或是在程式執行時動態產生HTML文件並顯示出來
所以這邊透過WebBrowser把我們想要的網頁載入進來
這邊以中油網站為例,中油是使用Big5
WebBrowser htmlbrowser;
// 建構函式
public MainPage()
{
InitializeComponent();
//中油網站 http://www.cpc.com.tw/big5/home/index.asp
htmlbrowser = new WebBrowser();
htmlbrowser.LoadCompleted += browserNews_LoadCompleted;
htmlbrowser.Source = new Uri("http://www.cpc.com.tw/big5/home/index.asp ");
}
透過SaveToString取得Html
上述透過LoadCompleted事件,來讓我們在載入好網頁的內容後,可以拿到Html文件,搭配SaveToString()方法把Html文件架構語法轉換成字串,不過很妙的是,這邊如此轉換可以避免掉編碼問題!
string contentHTML = htmlbrowser.SaveToString();
HtmlDocument htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(contentHTML);
使用HtmlAgilityPack方法取得想要的內容
這邊我要取得中油網頁中的跑馬燈資料
HtmlNodeCollection nameNodes = htmlDoc.DocumentNode.SelectNodes("/html/body/table/tbody/tr[2]/td/marquee");
foreach (HtmlNode node in nameNodes)
{
string strValue = (node.InnerText);
Debug.WriteLine(strValue);
}
中油的跑馬燈文字畫面
這邊是擷取出來的是顯示的內容
參考資料:
http://www.dotblogs.com.tw/pou/archive/2013/04/03/99824.aspx
http://www.dotblogs.com.tw/hungys/archive/2013/05/12/103526.aspx
文章中的敘述如有觀念不正確錯誤的部分,歡迎告知指正 謝謝 =)
另外要轉載請附上出處 感謝