[C#] 取得證交所上市及上櫃的股票及ETF清單

[C#] 取得證交所上市及上櫃的股票及ETF清單

在證券交易所及櫃買中心市場上每一天都會有上市或下市的有價證券清單,做程式交易除了每日更新股價之外,還需要定期更新一下新上市或已下市的有價證券清單。
在證交所有一個網址可以查看最新上市或上櫃的清單。
查詢上市清單網址

https://isin.twse.com.tw/isin/C_public.jsp?strMode=2

上市或上櫃的清單

查詢上櫃清單網址

https://isin.twse.com.tw/isin/C_public.jsp?strMode=4

上市或上櫃的清單

透過這 2 個網址就可以知道最新的上市或上櫃有價證券清單是什麼。
可是這清單實在是太長了,包含了眾多的有價證券類別,如果只想看最常見的股票及 ETF 清單,
那就需要用程式把清單中只屬於股票及 ETF 的清單篩選出來。

接下來我會示範一下如何利用 C# 取得證交所有價證券清單的上市及上櫃股票 ETF 清單。
先看一下操作畫面

建置環境
前端架構: Vue.js, jQuery, Bootstrap
後端架構: C# ASP.Net MVC .Net Framework
我網頁上只講解重要的程式碼部份,完整範例可至下方下載。

HTML 語法

主要規劃一個查詢區域和結果列果。

Javascript 語法

查詢動作向後端呼叫 GetList() 取得資料

後端 C# 邏輯

後端語法有用到一個新元件 HtmlAgilityPack 此套件主要是解析 HTML 標籤,取得 HtmlAgilityPack 方法在 NuGet 上搜尋名稱「HtmlAgilityPack」,我安裝時的版本為 1.11.33 。

HtmlAgilityPack

安裝之後,在引用時就可以加入

using HtmlAgilityPack;

再來看一下主要的程式碼

此段程式碼主要是呼叫 https://isin.twse.com.tw/isin/C_public.jsp?strMode=2 或是 https://isin.twse.com.tw/isin/C_public.jsp?strMode=4 取得 HTML 原始檔,再從原始檔之中擷取表格資料。

擷取股票及 ETF 有使用到一些條件: ESVUFR, CEOGBU, CEOIEU, CEOGCU…
這些是我依照股票或是 ETF 他們分類而歸納的條件,只取得需要的資料加入在 DataTable 裡面。
最後只要將 DataTable 裡面的資料呈現在前端網頁上即可。

這個範例就簡單演示取證交所網頁的資料,大家可以拿去應用在自己的專案裡面,要記得擷取 HTML 原始碼都會因為來源網址改版而失效喔,應用在實務上時需要一些檢查條件和讀取錯誤判斷喔。

重點整理

  1. 有網址就可以查詢上市上櫃股票清單
  2. 使用 WebClient 取得網頁程式碼
  3. 使用 HtmlAgilityPack 爬蟲網頁語法
  4. 分析 HTML 取出資料

範例下載

連結 GitHub 下載範例

實際網頁專案開發範例

此連結是我實際應用在網頁上呈現的範例: Winvest 雲投資

相關學習文章

開發應用網站

如果你在學習上有不懂的地方,需要諮詢服務,可以參考站長服務,我想辨法解決你的問題
如果文章內容有過時、不適用或錯誤的地方,幫我在下方留言通知我一下,謝謝

加入社團一起討論

關注我的 IG