摘要:[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 下載