5種抓取台股歷史股價的方法

快速入門爬網及API呼叫股票資訊方法

Chris Lee
工程隨寫筆記
Published in
Jul 14, 2021

--

如果想分析股市,如何取得資料是重要的第一步,最簡單的方法,就是可以從現有的網站下載csv歷史檔,如:

  • Yahoo Finance:台版的資訊很豐富,但國外版可以直接下載歷史數據csv
  • 台灣證交所:東西最多,但最容易迷路
  • 鉅亨網:除了股價可以下載,還有相關財經新聞,相當豐富的網站

但如果你會寫程式,就會覺得一間一間抓實在太慢了,下面就來說明幾種取得歷史股價的方法。

1. 證交所網站

通常看到的多數網站,都可以透過爬網技術爬下來,如果你爬不下來,代表你道行不夠深。

證交所抓歷史股價的網址是這個,當你填寫股票代碼後,他會透過GET方法從後台抓取資料,可以從網頁監控畫面看到:

因此我們知道,只要將股票代號及日期,帶上我們想要的資訊,就可以抓取歷史股價,以0050為例:

證交所的網站算好爬的,只要善用懂網頁監控器,幾乎沒有什麼是抓不下來的。

2. yfinance API

yfinance 是很常見的股票API,可以快速抓取股價,並且設定時間區間,詳細可以看文件

但缺點就是在台股的資訊,除了股票代碼要記得加「.TW」,個股財務資訊也很常沒資料,但如果只是抓歷史股價,依然是瑕不掩瑜:

3. yahoo_fin API

跟yfinance功能幾乎一樣的API,數據源依然是yahoo,但背後維護的團隊是不一樣的,可以參考說明文件

yahoo_fin相對於yfinance較為年輕,功能上也有許多改進之處,但缺點就是在財務資訊上的資料偏少,我覺得這是台股共同痛點。

4. twstock API

歷史悠久的台股專屬開源API,除了簡單易用外,說明文件也是全中文,非常適合新手使用。

因為是專屬於台股的API,財務資訊量相對於上述兩個API較為充足,可以跟yfinance配合使用。

5. FinMind API

FinMind 是一個非常強大且好用的API,可以參考官方文件,目前只要註冊驗證後,提供每小時600個request。

FinMind 語法簡單易用,資料自動轉成通用的 Pandas DataFrame,大幅提高資料處理效率。

如果說只選擇一種方法抓取股價,我會最推薦FinMind,無論是在功能完整性及開源維護上,它都是數一數二的佼佼者,希望對你有所幫助。

--

--

Chris Lee
工程隨寫筆記

隱身在金融業的資料科學家,部分文章會在個人部落格唷 https://chrisnote.com/