【Python量化資料】用Python抓取Yahoo Finance、investing.com股價資料 python抓取資料最輕鬆的兩大方法
一、前言
資料要進行分析或回測前最重要的就是資料源,而股價要去哪裡抓呢?
這邊提供大家python快速抓股價資料的兩大網站提供的api
(1) Yahoo Fiance 提供的 pandas_datareader
(2) Investing.com 提供的 investpy
至於哪個比較好比較完整各有優缺點
進入教學前,不要忘了訂閱按讚分享唷!
部落格教學網站:
https://pixnashpython.pixnet.net/blog
想要即時訂閱最新文章:
https://forms.gle/MdXmiF2HgHhNChL46
訂閱Telegram來接收最新資訊:
https://t.me/joinchat/VUUuDt67Uq5l6CIQ
二、使用
首先下載套件包(package),還不會下套件包可以參考我的文章下載套件包的三大方法
pip install pandas_datareader
pip install investpy
(1) pandas_datareader
a. 如何使用pandas_datareader
# 匯入Yahoo Finance套件
import pandas_datareader as web
# 下載股價資料
df = web.DataReader(name='2330.TW', data_source='yahoo', start='2020-01-01', end='2020-12-31') #
name為股票代號名稱 start、end為資料下載期間
下載完的資料在Spyder裡面是長這樣
b. 一次下載多檔資料,並分別計算
# 一次下載多檔資料
AllData = {} # 新建一字典放資料
tickers = ['^TWII', '2330.TW', '2454.TW', '2317.TW'] # list放入要下載的tickers
for ticker in tickers: # 下載資料
df = web.DataReader(name=ticker, data_source='yahoo', start='2020-01-01', end='2020-12-31')
AllData[ticker] = df # 把下載的股價資料放入字典
# 分別計算每檔資料
for ticker in AllData.keys():
df = AllData[ticker] # 這樣就可以在迴圈下計算每檔資料嘍
這樣字典裡就放著全部下載的股票,要計算哪個就用df = AllData[ticker]拿出來就可以了
(2) investpy
a. 如何使用investpy
這邊要注意時間格式跟yahoo finance有點不一樣
import investpy # 下載股價資料 df = investpy.get_stock_historical_data(stock='2330', country='Taiwan', # 比yahoo finance多填一個國家別 from_date='01/01/2010', # 這邊注意時間格式 to_date='01/01/2020')
# 獲得全部票清單 ticker_list = investpy.get_stocks_list('Taiwan') # 填入國家
下載完的資料跟yahoo finance大致一樣,就多一欄計價幣別,少一欄調整後股價
b. 如何透過Investing.com抓到想分析的股票並且透過investpy下載及其他市場資料
先到官網裡面打入想要的股票或找到想下載的資料
點進去後可以看到代號及所屬市場可以找到investpy.get_stock_historical_data所要的參數了
因為investpy還提供不同的歷史資料,債券、貨幣和基金等等,你在investing.com可能看到,這樣就可以下載了
investpy.get_bond_historical_data(bond, from_date, to_date)
investpy.get_stock_historical_data(stock, country, from_date, to_date)
investpy.get_fund_historical_data(fund, country, from_date, to_date)
三、後記
pandas_datareader可以抓到期間較長的資料,但股票代號較不好找而且在盤中下載資料的話較容易有缺漏,大家用過就知道了之後會有一篇教大家如何輕鬆在Yahoo Fiance輕鬆獲取台股清單及台灣指數代號以供pandas_datareader下載
部落格教學網站:
https://pixnashpython.pixnet.net/blog
想要即時訂閱最新文章:
https://forms.gle/MdXmiF2HgHhNChL46
訂閱Telegram來接收最新資訊:
https://t.me/joinchat/VUUuDt67Uq5l6CIQ
留言列表