[ASP.NET][C#]使用HtmlAgilityPack(1) 擷取網頁上的股票

摘要:[ASP.NET][C#]使用HtmlAgilityPack(1) 擷取網頁上的股票




1.新增一個 WebForm1.aspx


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



3.直接到 WebForm1.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://tw.stock.yahoo.com/q/q?s=1101"));
            //以奇摩股市為例http://tw.stock.yahoo.com
            //1101 表示為股票代碼

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

            // 裝載第一層查詢結果 
            HtmlDocument hdc = new HtmlDocument();

            //XPath 來解讀它 /html[1]/body[1]/center[1]/table[2]/tr[1]/td[1]/table[1] 
            hdc.LoadHtml(doc.DocumentNode.SelectSingleNode("/html[1]/body[1]/center[1]/table[2]/tr[1]/td[1]/table[1]").InnerHtml);

            // 取得個股標頭 
            HtmlNodeCollection htnode = hdc.DocumentNode.SelectNodes("./tr[1]/th");
            // 取得個股數值 
            string[] txt = hdc.DocumentNode.SelectSingleNode("./tr[2]").InnerText.Trim().Split('\n');
            int i = 0;

            // 輸出資料 
            foreach (HtmlNode nodeHeader in htnode)
            {
                //將 "加到投資組合" 這個字串過濾掉
                Response.Write(nodeHeader.InnerText + ":" + txt[i].Trim().Replace("加到投資組合", "") + "
");
                i++;
            }

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


 


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



11. 結果,是不是即時抓到一支股票了




以上參考來自

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