Python爬蟲:爬取黃金價格並畫圖
前言
今天將會分享如何使用python爬取台灣銀行的黃金牌告價格並畫出線圖。
在開始爬蟲時都要先研究 目標是誰?結構是甚麼?我要什麼資料?希望最後的資料長怎麼樣? 在腦中有些許畫面後,我們就可以開始了!!!
將學習到
- 使用pandas爬取黃金價格的表格
- 利用pandas畫黃金價格線圖以及加上自訂均線
環境設定
win10 Anaconda的jupyter(6.0.3)
使用套件
import pandas
from matplotlib import pyplot as plt
開始工作
步驟1:檢查目標
可以先點開該網站並按滑鼠右鍵”檢查”,先快速看過此網站結構。
步驟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 和数据科学