3C科技 娛樂遊戲 美食旅遊 時尚美妝 親子育兒 生活休閒 金融理財 健康運動 寰宇綜合

Zi 字媒體

2017-07-25T20:27:27+00:00
加入好友
Python – 透過Yahoo Finance API抓取台股歷史資料 2020-10-11 更新 目錄 原始文章 Python – 透過Yahoo Finance API抓取台股歷史資料 無論是投資或是資料科學專案,經常需要股市資料作分析。證交所在政府資料開放平台中提供了個股日成交資訊,也可以透過API查詢歷史記錄,但很容易因為頻繁抓取資料而被暫時的鎖IP,之後會再寫另外一篇文章說明。 常見的替代方案是到美國的Yahoo Finance下載,只要搜尋「股票代碼.TW」就可以查詢,如「0050.TW」。另外,國外有一些公司也提供類似的API服務,像是IEX Cloud和Alpha 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支股票的歷史記錄後,確實沒有被阻擋的問題。 # 必須先安裝yfinance套件 import yfinance as yf import h5py import pandas as pd # 讀取csv檔 stock_list = pd.read_csv(儲存路徑 + '/stock_id.csv') stock_list.columns = ['STOCK_ID', 'NAME'] historical_data = pd.DataFrame() for i in stock_list.index: # 抓取股票資料 stock_id = stock_list.loc[i, 'STOCK_ID'] + '.TW' data = yf.Ticker(stock_id) df = data.history(period="max") # 增加股票代號 df['STOCK_ID'] = stock_list.loc[i, 'STOCK_ID'] # 合併 historical_data = pd.concat([historical_data, df]) time.sleep(0.8) historical_data.to_hdf(路徑 + '/historical_data.h5', key='s') 推薦文章 在DataCamp學Python和R語言,快速入門資料科學 A Aron 以前用MIX這個名字在網路打滾,後來改為Aron。工業設計系畢業,曾任職知名品牌行銷企劃,做點設計,寫文案也寫網站;目前擔任零售業數據分析師。最近開始練格鬥和Python量化投資。

本文由aronhackcom提供 原文連結

寫了 5860316篇文章,獲得 23313次喜歡
精彩推薦