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
查看全部
發表第一個留言支持創作者!
對資料科學家或數據分析師來說,資料量太大、電腦效能不足一直都是個痛,經常要小心翼翼地觀察記憶體使用率是不是快爆炸。然而,就我的觀察,一樣都是撰寫程式,資料科學工作者對於程式碼乾淨、易懂、高效率的追求似乎比其他工程師來得低。(或是我的樣本數不足,以偏概全)
雖然數據分析師是新職位,但數據分析或是資料分析的概念一點都不新。公司裡面行之有年的職位,不管是行銷、業務、採購、倉管,每個職位都需要數據,也都需要分析。隨著大數據、資料科學、機器學習、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
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
  在計算數字時我們要先搞懂運算符號代表的涵義,Python裡面的符號跟我們認知的不會有太大的差別,但是有一些代表不一樣的意思,就必須搞懂才不會在寫程式時,程式碼的重複性太高,會導致日後的維修性降低。
Thumbnail
常常會遇到好不容易寫好程式,但是輸出的時候沒辦法按照自己想要的格式,或是間隔來輸出,這時需要用到的就是格式化輸出,格式化輸出就是調整排版的一個形式。
Thumbnail
一、什麼是變數?   變數是指用來代表某一種資料型態的符號,以非數字的符號來表達,可以是英文字母也可以是一個英文單字,不過python有一些英文字母不能被當作變數,我們稱作保留字,例如:False、None、True、and、is、not、or、......,之後會在介紹。
Thumbnail
IDE是甚麼? IDE又叫做整合開發環境(Integrated Development Environment),在編輯程式碼時有許多的步驟,例如撰寫、編譯、除錯、執行......等過程,都是分開進行,但現在可以在同一個環境下開發,而使用的這些環境正是IDE。
Thumbnail
PYTHON 介紹 Python 是一種被廣泛使用的高階編程語言,它的用途十分廣泛,支援了多種的程式設計的範式,包括函數式、指令式、結構化、物件導向。 Python的設計哲學強調了它簡潔的語法,是使用空格縮進來劃分程式碼。 Python是的社群中擁有許多模組可以使用,在進行某些用途時可以很引入模組,
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
  在計算數字時我們要先搞懂運算符號代表的涵義,Python裡面的符號跟我們認知的不會有太大的差別,但是有一些代表不一樣的意思,就必須搞懂才不會在寫程式時,程式碼的重複性太高,會導致日後的維修性降低。
Thumbnail
常常會遇到好不容易寫好程式,但是輸出的時候沒辦法按照自己想要的格式,或是間隔來輸出,這時需要用到的就是格式化輸出,格式化輸出就是調整排版的一個形式。
Thumbnail
一、什麼是變數?   變數是指用來代表某一種資料型態的符號,以非數字的符號來表達,可以是英文字母也可以是一個英文單字,不過python有一些英文字母不能被當作變數,我們稱作保留字,例如:False、None、True、and、is、not、or、......,之後會在介紹。
Thumbnail
IDE是甚麼? IDE又叫做整合開發環境(Integrated Development Environment),在編輯程式碼時有許多的步驟,例如撰寫、編譯、除錯、執行......等過程,都是分開進行,但現在可以在同一個環境下開發,而使用的這些環境正是IDE。
Thumbnail
PYTHON 介紹 Python 是一種被廣泛使用的高階編程語言,它的用途十分廣泛,支援了多種的程式設計的範式,包括函數式、指令式、結構化、物件導向。 Python的設計哲學強調了它簡潔的語法,是使用空格縮進來劃分程式碼。 Python是的社群中擁有許多模組可以使用,在進行某些用途時可以很引入模組,