這段程式碼是使用C#語言和HtmlAgilityPack套件,以爬蟲方式從台灣證券交易所網站(https://www.twse.com.tw/)取得某股票代號的股價資料,並將其儲存成一個字串。
首先,程式碼宣告了要查詢的股票代號為2330,然後組成查詢網址url。接著,使用HtmlAgilityPack套件建立了一個BrowsingContext物件,並透過OpenAsync方法開啟查詢網址所指向的網頁,取得了網頁的Html文檔。接著,程式碼使用QuerySelector方法取得網頁中的table元素,透過這個元素可以取得網頁上顯示的股價資料表格。然後,使用table.Rows取得表格中所有的列,逐一遍歷每一列,再逐一取得每一列中的欄位資料,將其拼接成字串。
最後,經過迴圈的處理,stockStr字串便會儲存下來查詢到的股價資料。你可以將這段程式碼複製到Visual Studio或其他開發環境中,進行編譯運行,看看程式碼的實際效果。但需要注意,網頁中的Html結構可能會變化,可能需要根據實際的網頁結構做些許的修改,才能獲得正確的結果。
using System; using System.Windows.Forms; using AngleSharp;//使用angleSharp套件 using AngleSharp.Dom; using AngleSharp.Html.Dom; namespace ProjectOfTesting { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private async void Form1_Load(object sender, EventArgs e) { var stockCode = "2330"; // 要查詢的股票代號 var url = $"https://www.twse.com.tw/exchangeReport/STOCK_DAY?response=html&stockNo={stockCode}"; var config = Configuration.Default.WithDefaultLoader(); // 建立HtmlAgilityPack套件的設定物件 var context = BrowsingContext.New(config); // 建立BrowsingContext物件,用於載入網頁並解析 var document = await context.OpenAsync(url); // 開啟查詢網址所指向的網頁,取得網頁的Html文檔 var table = document.QuerySelector<IHtmlTableElement>("table"); // 取得表格元素 var rows = table.Rows; // 取得表格所有的列 var stockStr = ""; // 用來儲存股價資料的字串 foreach (var row in rows) // 逐一遍歷表格中的每一列 { var cells = row.Cells; // 取得每一列的所有欄位 foreach (var cell in cells) // 逐一遍歷每一列中的欄位資料 { stockStr += cell.TextContent + "\t"; // 將欄位資料拼接成字串,以Tab分隔 } stockStr += "\n"; // 換行 } Console.WriteLine(stockStr); } } }
沒有留言:
張貼留言