這個系列文章的第一篇,我們要來介紹如何簡單使用Python爬股價!而且全球股價都適用喔!今天就讓我們回到原點,從最簡單的python爬蟲開始教起,想要做股票數據分析,一定要先得到股票資料,所以我們就從股票資料如何獲取開始吧!
從頭開始學 python
這篇文章中
我們會帶著初學者開始再從頭瞭解
如何用python分析財經資料,並從中獲利!
你是程式新手嗎?
不用擔心,只要跟著這一系列的教學,
保證你一定學的會!
這一系列教學將會是hahow課程中的化簡,
但是可以幫助新手無痛的開始使用python!
請點選此此課程範例,免費線上運行程式碼
使用 Google Colab 來寫 Python
Google ,佛心來著的公司,最近推出了免費雲端寫程式的平台: Google Colab
不用安裝任何軟體,可以線上免費使用 Python 實在是太方便了!只要打開 Colab 並且新增一個 notebook ,並將下方的 Code 複製貼上跑一跑囉!當然你也可以打開已經寫好的課程範例,免費線上運行程式碼!讓你快速體驗 Colab 的實力!廢話不多說,進入今天的正題吧!
用 Python 製作爬蟲爬取歷史股價
首先要先獲取股價資料,我們會用常用的 Python 函式庫:requests
它可以將網路上的資料給下載下來,給程式使用
import requests
這邊的import,就像是我們在電腦裡面打開某個軟體來使用,一樣的意思。我們打開 requests,方便我們之後能夠用它來下載「台積電」的資料:
https://query1.finance.yahoo.com/v8/finance/chart/2330.TW?period1=0&period2=1549258857&interval=1d&events=history&=hP2rOschxO0
首先,上面這一串,明顯是一個網址,點進去後,會發現非常多文字,這個就是我們用瀏覽器跟 yahoo finance 的 server 索取了台積電的股價。上面這串網址,總共有幾個地方可以調整,方便我們爬取不同的資訊:
- 2330.TW 是台積電在 yahoo finance 上的 symbol,你也可以任意換成其他的,例如蘋果(AAPL),特斯拉(TSLA),微軟(MSFT)等等
- period1 是指起始時間,其單位為從1970年開始過了n秒
- period2 是指結束時間,其單位為從1970年開始過了n秒
以上的網址,就可以將台積電在這兩個區間股價資訊給爬下來了!我們可以用 Python 把網址裡內的內容給爬下來。
與遠端 server 的溝通:get 和 post 方法
斯斯有兩種,電腦常用的訊息傳遞方式也有兩種,叫做 get 跟 post。你可以想像一種溝通是寫信、一種是打電話、一種是用line,無論哪一種,只要能夠溝通正確就可以了!我們可以用 requests.get 或是 requests.post 來跟 yahoo 的 server 索取資料,至於什麼時候用 get,什麼時候用 post,就是看 yahoo finance 的 server 適用於哪一種來決定的。
# 網址
site = "https://query1.finance.yahoo.com/v8/finance/chart/2330.TW?period1=0&period2=1549258857&interval=1d&events=history&=hP2rOschxO0"
# 利用 requests 來跟遠端 server 索取資料
response = requests.get(site)
上面的程式碼,我們會產生一個 response 物件,是 yahoo server 傳過來的,裡面有台積電的歷史股價資訊,要怎麼把股價資訊打印出來呢?我們可以使用
print(response.text)

但這些文字檔非常不好閱讀,所以我們可以整理一下
將資料整裡成 DataFrame
會發現此文字檔非常大…,這種格式叫做 json,
我們必需要進行一些處理,將文字檔轉換成 dataframe ,才能閱讀這些資料
import json
import numpy as np
import pandas as pd
data = json.loads(response.text)
df = pd.DataFrame(data['chart']['result'][0]['indicators']['quote'][0], index=pd.to_datetime(np.array(data['chart']['result'][0]['timestamp'])*1000*1000*1000))
我們可以印出前面五行:
df.head()

繪圖
我們可以將收盤價的歷史紀錄給畫出來:
df.close.plot()

全球股價
你可以將任何一檔股價,包含美股港股台股陸股,用同樣的方式爬下來,只要在yahoo finance可以找到,就一定可以下載的下來喔!例如微軟(MSFT)、蘋果(AAPL)、特斯拉(TSLA),都可以用類似的方法來下載!
有了 google 提供的免費伺服器,我們可以在雲端執行此單元程式碼範例
行有餘力,請點選下一單元,將全球大盤指數都下載下來!
這一系列是我們影音課程的化簡版,
假如對此教程有興趣,歡迎參考我們的影音課程,裡面有更詳細並完整的教學,包含資料庫建置、數據分析、回測等等。當然我們也有免費的文章,以爬蟲來說,就有非常多篇,你可以先逛一逛:
除了爬股票分析的資料,我們還有爬一些奇特的數據,有需要也可以來看看: