close

【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裡面是長這樣

3.png

 

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]拿出來就可以了

4.png

 

(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大致一樣,就多一欄計價幣別,少一欄調整後股價

5.png

 

b. 如何透過Investing.com抓到想分析的股票並且透過investpy下載及其他市場資料

先到官網裡面打入想要的股票或找到想下載的資料

https://www.investing.com/

1

點進去後可以看到代號及所屬市場可以找到investpy.get_stock_historical_data所要的參數了

2

因為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

arrow
arrow

    恩哥Python 發表在 痞客邦 留言(1) 人氣()