Python爬蟲:爬取黃金價格並畫圖

簡單使用pandas整理和 matplotlib畫圖

MinKuan
4 min readJul 31, 2020

前言

今天將會分享如何使用python爬取台灣銀行的黃金牌告價格並畫出線圖。

在開始爬蟲時都要先研究 目標是誰?結構是甚麼?我要什麼資料?希望最後的資料長怎麼樣? 在腦中有些許畫面後,我們就可以開始了!!!

將學習到

  • 使用pandas爬取黃金價格的表格
  • 利用pandas畫黃金價格線圖以及加上自訂均線

環境設定

win10 Anaconda的jupyter(6.0.3)

使用套件

import pandas
from matplotlib import pyplot as plt

開始工作

步驟1:檢查目標

可以先點開該網站並按滑鼠右鍵”檢查”,先快速看過此網站結構。

https://rate.bot.com.tw/gold/chart/year/TWD

步驟2:使用pandas爬取網站並整理

import pandas as pd#目標網站
url="https://rate.bot.com.tw/gold/chart/year/TWD"
#開始爬取該網站
df= pd.read_html(url)

如果目標網站內有已建好的表格通常都可以用read_html爬取

#查看表格共有幾個
len(df)
#查看第1個表格
df[0]
#確認好目標表格
dfs=df[0]
#取出我們要的欄位
dfs=dfs[["日期","本行賣出價格"]]
#調整索引(row index)並調整日期的格式
dfs.index=pd.to_datetime(dfs["日期"],format="%Y/%m/%d")

#依照索引(row index)排序
dfs.sort_index(inplace=True)

步驟3:使用matplotlib畫圖

from matplotlib import pyplot as plt#以下是兩種調整中文字型,如果沒有亂碼可以省略此行
#plt.rcParams[“font.family”] = [“SimHei”]
#plt.rcParams[‘font.family’]=[‘Microsoft YaHei’]

%pylab inline
#用"本行賣出價格"開始畫圖。.plot(kind="line",figsize=[長,寬],\
xlim=('起始日','到期日'))
dfs["本行賣出價格"].plot(kind="line",figsize=[15,5],\
xlim=('2020-01-01','2020-06-30'))
#自定義要的移動平均參數。.rolling(window=參數).mean()
#5日移動平均線
dfs["ma5"]=dfs["本行賣出價格"].rolling(window=5).mean()
#20日移動平均線
dfs["ma20"]=dfs["本行賣出價格"].rolling(window=20).mean()
#用"本行賣出價格","ma5","ma20"
dfs[["本行賣出價格","ma5","ma20"]].plot(kind="line",\
figsize=[15,5],xlim=('2020-01-01','2020-06-30'))

成果展示

完整程式碼

小結

這邊我們使用了pandas的read_html直接爬取目標,且運用了pandas調整成我們所要的資料,最後用了matplotlib畫出我們所要的資料。
如果你對於以上的內容有建議歡迎提出,一起討論絕對是成長的捷徑!!

參考資料

[財經爬蟲] 如何透過Pandas 快速抓取並分析黃金價格?
[Python] Pandas 基礎教學
Python 和数据科学

--

--

MinKuan
MinKuan

No responses yet