User Tools

Site Tools


prog:csharp:250306-003:index

C#: 爬蟲台積電股價 (2025-03-06)

Local Backup

  • 這段程式碼是使用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);
            }
    
        }
    }
  • 14 person(s) visited this page until now.

prog/csharp/250306-003/index.txt · Last modified: 2025/03/06 13:24 (external edit)