Python 範例程式碼!使用 yahoo finance 爬取 0050ETF 股價

自從新冠肺炎發生後,2020 年 3 月美股面臨了熔斷,台股當然也深受影響,正當大家以為空頭市場即將來臨時,股市突然急轉而上,全世界的股票市場迎來了歷史上最大的多頭市場,因此投入股票市場獲取高額的報酬,也成為了許多人嚮往的投資方式,為了取得高額報酬,多數人會採用技術分析將過往的股價走勢進行分析,希望能獲得投資的資訊,因此取得股價資料也是許多投資人所需要的。

使用 yahoo finance 爬取股價並合併表格

透過 Python 取得股價資料是一個相當方便的方法,本文將透過 yahoo finance 的股價抓取方式,告訴大家該如何透過 yahoo finance 套件獲取股價資訊,也會提供程式碼告訴大家如何把元大 0050ETF 中 50 檔股票的股價資訊自動爬取後,形成一個表格,讓分析上可以更方便。

首先先導入套件:

範例: 爬取上市公司 — 台積電 2021/6/21 到 2021/9/17 的股價

爬取上市公司股價

在這個程式碼當中第一個資訊是股票代號,以台股而言台積電的股票代號為2330,台積電是上市公司,後面要加上”.TW”,接著是需要資料的起始日這本文為2021年6月21日,結束日為2021年9月17日,然而要取得到9月17日的股價資訊則在結束日要多延後一天因此要設為9月18日。

範例: 爬取上櫃公司 — 鈊象 2021/6/21 到 2021/9/17 的股價

爬取上櫃公司股價

跟上述爬取台積電股價一樣,先放入股票代號3293,唯一不同的是鈊象是上櫃公司,所以要在股票代號後加上”.TWO”,如此一來就能爬取上櫃公司的股價了。

範例: 爬取美股 — 蘋果公司 2021/6/21 到 2021/9/17 的股價

爬取美股股價

跟爬取台股的方法一樣,只要在股票代號放上你想觀察的公司即可,蘋果的股票代號為AAPL,如果想觀察微軟就將股票代號輸入MSFT。

Yahoo Finance能爬取不僅只有個股的股價資料還有各大股票市場的指數,以及世界上許多國家的匯率,也能爬取能源的價格,因此透過Yahoo Finance能獲得許多資訊,只要輸入代號即可,若要查詢代號可到 Yahoo Finance 網站查詢 (https://finance.yahoo.com/)。

範例: 爬取 0050 ETF 股價

然而當我們在研究股票市場時,通常不會只觀察一檔股票股價,而是希望能產生出一個表格,讓我們要的股票的股價資料能一同觀察,因此以下將告訴大家如何將元大 0050 ETF 當中 50 檔成分股的股價自動爬取後形成一個表格,本文以元大 0050ETF 2021 年第二季期間為例。

爬取 0050 ETF 股價

首先我們先創造一個stock_list串列將元大0050 ETF的股票代號放入,接著第一步先爬取它的股價,然後在Open、High、Low、Close、Adj Close、Volume這幾欄資料當中我們只要Close這欄的資訊,最後此時我們的欄名是0050.TW,由於台股代號都是由四個數字組成,因此我們的欄名只採用前四個數字。

0050成份股代號列表

輸入這季當中50檔成分股的股票代號,若要查詢各季各ETF的成分股可上公開資訊觀測站(https://mops.twse.com.tw/mops/web/t78sb04_q2)。

由於元大0050 ETF的成分股都是上市公司,因此要透過 yahoo finance 爬取股票代號後面都要加上”.TW”,因此透過迴圈的方式幫50檔股票都加上,就能省去不少時間,一開始先創立一個空的串列 stock_no,將加上 ”.TW” 後的股票代號用 append 函數加入 stock_no 串列當中。

最後我們先透過迴圈的方式將在stock_no串列當中所有股票的股價爬取下來, 接著用日期作為索引值,將50檔股票的股價資訊與一開始0050的股價資訊合併起來形成一個表格,則所有的成分股資料就一目了然,建議大家可以放上最後一行程式碼print(i),就能知道現在爬取到哪檔股票的股價資訊了

感謝大家的觀閱,以上為爬取元大0050成分股的方式,大家也可以嘗試爬取其他感興趣的股票股價。

最後附上 GitHub 程式碼

https://github.com/grandma-tutorial/yfinance-tutorial

留言討論區