Python - 透過Yahoo Finance API抓取台股歷史資料

更新於 發佈於 閱讀時間約 3 分鐘

原始文章


無論是投資或是資料科學專案,經常需要股市資料作分析。證交所在政府資料開放平台中提供了個股日成交資訊,也可以透過API查詢歷史記錄,但很容易因為頻繁抓取資料而被暫時的鎖IP,之後會再寫另外一篇文章說明。
常見的替代方案是到美國的Yahoo Finance下載,只要搜尋「股票代碼.TW」就可以查詢,如「0050.TW」。另外,國外有一些公司也提供類似的API服務,像是IEX CloudAlpha Vantage,但這些資料不一定包含台股的資訊,建議付費前先查詢清楚,使用的關鍵字為Supported Symbols,Symbols指的是股票代號,像是這一篇〈How to Find All Supported Symbols on IEX Cloud〉
如果你希望獲得歷史資料,並持續累積新資料,最好的方式應該是先用這篇文章的方式抓取所有歷史資料,然後再寫一支程式每日抓取證交所的個股日成交資訊。我在2020年6月25日執行以下程式,並儲存成h5檔,總資料筆數約380萬,檔案大小約300mb,不算太大。

執行流程與程式碼

下載台股代碼清單

首先,先透過證交所的個股日成交資訊API下載最新的收盤資料,,目的是為了取得股票代碼清單。當然,你可以直接下載Excel或CSV檔,也可以透過以下的程式下載。
import requests
import numpy as np
import pandas as pd

link = 'https://quality.data.gov.tw/dq_download_json.php?nid=11549&md5_url=bb878d47ffbe7b83bfc1b41d0b24946e'
r = requests.get(link)
data = pd.DataFrame(r.json())

data.to_csv(儲存路徑 + '/stock_id.csv', index=False, header = True)

下載Yahoo股市資料

根據〈Free Stock Data for Python Using Yahoo Finance API〉.)的說法,Yahoo Finance的API的限制為:Using the Public API (without authentication), you are limited to 2,000 requests per hour per IP (or up to a total of 48,000 requests a day)。在我用以下的code抓取1116支股票的歷史記錄後,確實沒有被阻擋的問題。
點擊連結看完整文章〈使用Python及Yahoo Finance API抓取台股歷史資料〉
為什麼會看到廣告
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
對資料科學家或數據分析師來說,資料量太大、電腦效能不足一直都是個痛,經常要小心翼翼地觀察記憶體使用率是不是快爆炸。然而,就我的觀察,一樣都是撰寫程式,資料科學工作者對於程式碼乾淨、易懂、高效率的追求似乎比其他工程師來得低。(或是我的樣本數不足,以偏概全)
雖然數據分析師是新職位,但數據分析或是資料分析的概念一點都不新。公司裡面行之有年的職位,不管是行銷、業務、採購、倉管,每個職位都需要數據,也都需要分析。隨著大數據、資料科學、機器學習、AI等酷炫的新名詞、新技術與新應用出現,所需的知識與技能多到員工爆肝也學不完。
在Python中使用MySQLdb的起手式大概長這樣。記得execute裡面的SQL語法一定要加上冒號,否則會出錯。我也在這個愚蠢的錯誤上跌倒過。編碼問題是資料庫管理中常見的問題,編碼包含又包含了兩個部份,collation和character set。
資料科學家、數據分析師是近幾年新興,而且熱門的職業,而DataCamp是一個專精於資料科學的程式教學網站。在實務上會用到的各種知識與程式技能,從流程面的網路爬蟲、數據清洗、資料視覺化,到技術面的Python、R語言、SQL,在DataCamp上幾乎都可以找到相關教學。
LinkedIn是專業導向的社群平台,許多公司和專業人士都會在上面分享最新消息與新知。只要你願意,你也可以透過LinkedIn傳訊息給比爾蓋茲。
如果每個人的人格特質都可以量化成「創作者」模式與「觀眾」模式,你的比例會是多少?20%創作者和80%觀眾?或是70%創作者和30%的觀眾?這個比例及自我認知相當重要,因為兩種模式代表著相當不同的生活方式。
對資料科學家或數據分析師來說,資料量太大、電腦效能不足一直都是個痛,經常要小心翼翼地觀察記憶體使用率是不是快爆炸。然而,就我的觀察,一樣都是撰寫程式,資料科學工作者對於程式碼乾淨、易懂、高效率的追求似乎比其他工程師來得低。(或是我的樣本數不足,以偏概全)
雖然數據分析師是新職位,但數據分析或是資料分析的概念一點都不新。公司裡面行之有年的職位,不管是行銷、業務、採購、倉管,每個職位都需要數據,也都需要分析。隨著大數據、資料科學、機器學習、AI等酷炫的新名詞、新技術與新應用出現,所需的知識與技能多到員工爆肝也學不完。
在Python中使用MySQLdb的起手式大概長這樣。記得execute裡面的SQL語法一定要加上冒號,否則會出錯。我也在這個愚蠢的錯誤上跌倒過。編碼問題是資料庫管理中常見的問題,編碼包含又包含了兩個部份,collation和character set。
資料科學家、數據分析師是近幾年新興,而且熱門的職業,而DataCamp是一個專精於資料科學的程式教學網站。在實務上會用到的各種知識與程式技能,從流程面的網路爬蟲、數據清洗、資料視覺化,到技術面的Python、R語言、SQL,在DataCamp上幾乎都可以找到相關教學。
LinkedIn是專業導向的社群平台,許多公司和專業人士都會在上面分享最新消息與新知。只要你願意,你也可以透過LinkedIn傳訊息給比爾蓋茲。
如果每個人的人格特質都可以量化成「創作者」模式與「觀眾」模式,你的比例會是多少?20%創作者和80%觀眾?或是70%創作者和30%的觀眾?這個比例及自我認知相當重要,因為兩種模式代表著相當不同的生活方式。
你可能也想看
Google News 追蹤
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
這次我們試試看用app scriipt接open data裏台灣股市的資料,內有公司財務報表,也有一些股票的歷史資料。
Thumbnail
(不想花時間爬蟲嗎? 點我兩杯飲料錢直接購買、下載整理好的csv) 要分析股市,取得資料是首要的一步。最簡單的方法是從現有網站下載歷史數據的CSV檔案,例如: Yahoo Finance:台灣版提供豐富的資訊,國際版還可以直接下載歷史數據的CSV檔。 台灣證交所:擁有最全面的資料,但網頁結
本篇我們會繼續討論從Part 1 撈取的 df_878 中提取股票代碼,並使用先前Part 2 定義的 get_info_yfinance 函式來獲取 Yahoo Finance 上的財務資料,接著將這些資料貼回 df_878 的相應欄位中。
在此篇中,我們來拿實務的例子作實戰練習,我們會討論如何在Google Colab的環境下,撈取所有台美股的股票代碼,並獲取相關細節,最後將獲取的資訊存取於SQLite資料庫中。
Thumbnail
對於剛接觸Python程式的使用者來說,要一口氣學會爬蟲可能相對困難,但若想即時且輕鬆獲得台股相關數據,你可以利用證交所所提供的API進行數據蒐集。只需要簡單幾行程式碼,就能輕鬆抓到台股上千支股票的每日資訊,是不是棒呆了!!
Thumbnail
因為工作的關係,需要在EXCEL產生和台股有關的資訊。 要抓取台股的方式有很多,譬如說用EXCEL 現在的功能從網頁匯入,但是畢竟愛寫程式的人就是因為懶,不想每次都用滑鼠點點點,所以就想要如何用VBA克服。 還好研究了一下,備齊以下幾個工具,就可以了。 (1)要有一個可以解析JSON格式的Li
Thumbnail
 前幾天,提到的籌碼,可以在籌碼K線上看到400張大戶,600張大戶⋯⋯⋯等等資料! 但是這樣的資料有時候看起來就是不過癮,你會不會想說想要知道到底千張大戶有幾個人,散戶又有多少人,趨勢如何,這時候,你可以呼喚神秘金字塔賦予你 神奇的力量!讓你可以一目暸然的看股權結構! https://n
Thumbnail
台股籌碼的盤勢觀察中,主要以現貨、期貨和選擇權等不同的籌碼面向進行每日的分析,以掌握市場的變化。同時,透過指數貢獻度的觀察,清楚地了解盤勢的控盤走向。此外也將技術面和主力籌碼面結合,以篩選出市場中的重點股,這有助於更全面地理解市場動態。
Thumbnail
之前有分享過GOOGLE SHEET可以用函數快速取得股票價格,那EXCEL如果要取得股票價格有沒有辦法呢? EXCEL取得股票的方法有超多種,這集要介紹最簡單的方式,完全不用寫任何函數,只要有滑鼠就可以了!! ▶️短片介紹 看教學影片之前可以先下載練習檔,學中做、做中學效果更好哦。
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
這次我們試試看用app scriipt接open data裏台灣股市的資料,內有公司財務報表,也有一些股票的歷史資料。
Thumbnail
(不想花時間爬蟲嗎? 點我兩杯飲料錢直接購買、下載整理好的csv) 要分析股市,取得資料是首要的一步。最簡單的方法是從現有網站下載歷史數據的CSV檔案,例如: Yahoo Finance:台灣版提供豐富的資訊,國際版還可以直接下載歷史數據的CSV檔。 台灣證交所:擁有最全面的資料,但網頁結
本篇我們會繼續討論從Part 1 撈取的 df_878 中提取股票代碼,並使用先前Part 2 定義的 get_info_yfinance 函式來獲取 Yahoo Finance 上的財務資料,接著將這些資料貼回 df_878 的相應欄位中。
在此篇中,我們來拿實務的例子作實戰練習,我們會討論如何在Google Colab的環境下,撈取所有台美股的股票代碼,並獲取相關細節,最後將獲取的資訊存取於SQLite資料庫中。
Thumbnail
對於剛接觸Python程式的使用者來說,要一口氣學會爬蟲可能相對困難,但若想即時且輕鬆獲得台股相關數據,你可以利用證交所所提供的API進行數據蒐集。只需要簡單幾行程式碼,就能輕鬆抓到台股上千支股票的每日資訊,是不是棒呆了!!
Thumbnail
因為工作的關係,需要在EXCEL產生和台股有關的資訊。 要抓取台股的方式有很多,譬如說用EXCEL 現在的功能從網頁匯入,但是畢竟愛寫程式的人就是因為懶,不想每次都用滑鼠點點點,所以就想要如何用VBA克服。 還好研究了一下,備齊以下幾個工具,就可以了。 (1)要有一個可以解析JSON格式的Li
Thumbnail
 前幾天,提到的籌碼,可以在籌碼K線上看到400張大戶,600張大戶⋯⋯⋯等等資料! 但是這樣的資料有時候看起來就是不過癮,你會不會想說想要知道到底千張大戶有幾個人,散戶又有多少人,趨勢如何,這時候,你可以呼喚神秘金字塔賦予你 神奇的力量!讓你可以一目暸然的看股權結構! https://n
Thumbnail
台股籌碼的盤勢觀察中,主要以現貨、期貨和選擇權等不同的籌碼面向進行每日的分析,以掌握市場的變化。同時,透過指數貢獻度的觀察,清楚地了解盤勢的控盤走向。此外也將技術面和主力籌碼面結合,以篩選出市場中的重點股,這有助於更全面地理解市場動態。
Thumbnail
之前有分享過GOOGLE SHEET可以用函數快速取得股票價格,那EXCEL如果要取得股票價格有沒有辦法呢? EXCEL取得股票的方法有超多種,這集要介紹最簡單的方式,完全不用寫任何函數,只要有滑鼠就可以了!! ▶️短片介紹 看教學影片之前可以先下載練習檔,學中做、做中學效果更好哦。