[ASP.NET][C#]使用HtmlAgilityPack(2) 擷取網頁上的匯率

摘要:[ASP.NET][C#]使用HtmlAgilityPack(2) 擷取網頁上的匯率




1.新增一個 WebForm2.aspx


2.在這個 WebForm2.aspx 內不用加任何元件



3.直接到 WebForm2.aspx.cs 內寫程式

增加 四個參考元件 ,等等寫程式會用到
using System.IO;
using HtmlAgilityPack;
using System.Text;
using System.Net;
 


4.HtmlAgilityPack 這邊出現了紅色毛毛蟲,不要緊

這是因為參考元件內沒有資料可以參考
只要把它下載回來新增進去就可以了
HtmlAgilityPack 下載
 


5. 點選瀏覽,找個下載後的檔案

剛下載回來路徑應該都是一樣的
路徑:HtmlAgilityPack.1.4.6\Net45

 


6. 點選 HtmlAgilityPack.dll 將它加入進來



7. 按確定



8. HtmlAgilityPack 加進來後,紅色毛毛蟲不見了

9. 開始寫程式了,寫在Page_Load內,讓網頁一執行是自動載入到頁面上


            //指定來源網頁
            WebClient url = new WebClient();
            //將網頁來源資料暫存到記憶體內
            MemoryStream ms = new MemoryStream(url.DownloadData("http://rate.bot.com.tw/Pages/Static/UIP003.zh-TW.htm"));
            //以台灣銀行為範例

            // 使用預設編碼讀入 HTML 
            HtmlDocument doc = new HtmlDocument();
            doc.Load(ms, Encoding.Default);

            //取得現在的日期
            Response.Write("現在時間:" + DateTime.Now + "<br />");
            // 在Html內表示換行

            // 取得匯率 
            for(int x=3;x<=21;x++) 
            {
                string txt1 = doc.DocumentNode.SelectSingleNode(@"/html[1]/body[1]/ul[1]/li[2]/center[1]/div[1]/div[2]/table[2]/tr[" + x + "]/td[1]").InnerText;
                string txt2 = doc.DocumentNode.SelectSingleNode(@"/html[1]/body[1]/ul[1]/li[2]/center[1]/div[1]/div[2]/table[2]/tr[" + x + "]/td[2]").InnerText;
                string txt3 = doc.DocumentNode.SelectSingleNode(@"/html[1]/body[1]/ul[1]/li[2]/center[1]/div[1]/div[2]/table[2]/tr[" + x + "]/td[3]").InnerText;
                string txt4 = doc.DocumentNode.SelectSingleNode(@"/html[1]/body[1]/ul[1]/li[2]/center[1]/div[1]/div[2]/table[2]/tr[" + x + "]/td[4]").InnerText;
                string txt5 = doc.DocumentNode.SelectSingleNode(@"/html[1]/body[1]/ul[1]/li[2]/center[1]/div[1]/div[2]/table[2]/tr[" + x + "]/td[5]").InnerText;
                string totle = string.Format("幣別:{0} ,買入現金匯率:{1} ,賣出即期匯率:{2} ,買入遠期匯率:{3} ,賣出歷史匯率:{4}", txt1, txt2, txt3, txt4, txt5);
                Response.Write(totle + "<br />");
            }

            //清除資料
            doc = null;
            url = null;
            ms.Close();
           


 


10. 寫完,按編譯執行看看 或 按 F5 快速鍵



11. 結果,是不是即時抓到台灣銀行全部的匯率了



以上參考來自

HTML Agility Pack:簡單好用的快速 HTML Parser
HtmlAgilityPack 下載