Python新手教學(1)用爬蟲爬全球股價!

此方法可以爬全球股市!今天讓我們回到原點,從最簡單的程式開始教起,想要做股票數據分析,一定要先得到股票資料,所以我們就從股票資料如何獲取開始吧!

從頭開始學python

這篇文章將會是一系列的2019年新文章,我們會從初學者開始再從頭帶你瞭解python如何分析財經資料,並從中獲利!

是程式新手嗎?不用擔心,只要跟著這一系列的教學,保證你一定學的會!
這一系列教學將會是hahow課程中的化簡,但是可以幫助新手無痛的開始使用python!

以往我寫的分析都太複雜了,比較曲高和寡,常常嚇到大家,真的不好意思,就像衝太快,發現後面沒跟上,我們的初衷應該是讓更多人能接觸python,而不是將將大家甩在後頭XDDD。

設定python環境

假如你還沒安裝python,可以先簡單的設定一下環境,我建議使用Anaconda,它一次就會幫你灌好不只是python,還有相關的套件,讓你可以無痛學習!

相關教學:python環境安裝
按照上方文章教學,只要照著步驟,直到可以印出hello world為止,就趕快回來這邊喔!

有些人覺得Anaconda太笨重,且安裝太久,但我個人認為,對於新手來說極度的好用,所以還是非常建議你直接安裝,假如學習後發現想要更深入,再考慮其他的解決方案。

接下來,我們就可以開始用jupyter寫程式了!

爬取歷史股價

首先要先獲取股價資料,我們會用常用的package:requests
它可以將網路上的資料給下載下來,給程式使用

1
import requests

這邊的import就有點像是,我們打開某個套件的感覺,之後才能使用它。

我們想要爬取的網址,以台積電「2330」為例:
https://query1.finance.yahoo.com/v8/finance/chart/2330.TW?period1=0&period2=1549258857&interval=1d&events=history&=hP2rOschxO0
網址中的period1是指起始時間,而period2是指結束時間,其單位為1970的過了n秒,以上的網址,就可以將台積電在這兩個區間股價資訊給爬下來了!

但很奇怪的是,你直接用瀏覽器打開,沒有辦法用!
因為瀏覽器通常是用「get」的方法,
而此網址必須要用post方法,才能正確的得到資料。

什麼是get和post呢?

兩種都是電腦之間溝通的方式,你可以想像一種溝通是寫信、一種是打電話、一種是用line,無論哪一種,只要能夠溝通正確,就可以了!

如何使用post方法得到資料呢?可以用以下方式:

1
2
site = "https://query1.finance.yahoo.com/v8/finance/chart/2330.TW?period1=0&period2=1549258857&interval=1d&events=history&=hP2rOschxO0"
response = requests.get(site)

這時,我們就會有一個response,裡面存放著台積電的歷史股價資訊,要怎麼把股價資訊打印出來呢?我們可以使用

1
print(response.text)

來察看所有的文字檔

將資料整理好

會發現此文字檔非常大…,這種格式叫做 json,
我們先把文字檔轉成 python 的 dictionary 跟 list 的結構
並且將資料轉成dataframe

1
2
3
4
5
6
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))

我們可以印出前面五行:

1
df.head()

這樣我們就簡單的得到了股價了!

### 繪圖

我們可以將收盤價的歷史紀錄給畫出來:

1
df.close.plot()


全球股價

你可以將任何一檔股價,包含美股港股台股陸股,用同樣的方式爬下來,只要在yahoo finance可以找到,就一定可以下載的下來喔!

行有餘力,請點選下一單元,我們就來抓全球股市指數吧!

這一系列是我們影音課程的化簡版,
假如對此教程有興趣,歡迎點選下方影音課程,會豐富到炸裂喔~

文章不錯,影音課程更讚:


或我們按個 鼓勵一下吧!