【Python量化資料】用Python抓取臺灣銀行各幣別每日牌告匯率:順便輕鬆計算中間匯率
一、前言
常常需要取得匯率資料嗎?臺灣銀行網站會是你的好選擇!裡面揭示著每日牌告匯率的報價,
我們可以運用此來抓取並分析匯率資訊,或者建立資料庫把資訊收集起來以備不時之需。
又是一篇帶你看到懂的python教學~
等等的教學分成兩部分:1.觀察臺銀牌告匯率網站、2.用python爬取匯率資料並計算中間匯率。
進入教學前,不要忘了訂閱按讚分享唷!
部落格教學網站:
https://pixnashpython.pixnet.net/blog
想要即時訂閱最新文章:
https://forms.gle/MdXmiF2HgHhNChL46
訂閱Telegram來接收最新資訊:
https://t.me/joinchat/VUUuDt67Uq5l6CIQ
二、觀察臺灣銀行牌告匯率網站
進入臺灣銀行歷史資料查詢 https://rate.bot.com.tw/xrt/history?Lang=zh-TW
然後隨便點一天去看歷史匯率收盤價可以發現它的組成很單純,
前面一段網址後面加上固定格式的日期,如此一來就可以透過python中的requests來抓取了。
https://rate.bot.com.tw/xrt/all/2021-09-24 << https://rate.bot.com.tw/xrt/all/ + 2021-09-24 兩組字串組成。
三、抓取匯率資料
簡單分成三步驟,1.拆解網址 2.取得資料 3.重組dataframe
完整程式碼
import pandas
import numpy
import datetime
todday = datetime.datetime.today() # 今天日期
delta = datetime.timedelta(days=1) # 要查詢遞延幾天的匯率
day = todday - delta # 時間計算
# 取得資料
day = day.strftime('%Y-%m-%d')
url = 'https://rate.bot.com.tw/xrt/all/' + day
data = pandas.read_html(url)
# 重組df
df = data[0]
df = df.replace('-', numpy.nan)
re_df = data[0]['幣別']
re_df = re_df.join(df['Unnamed: 3_level_0']['本行賣出'].astype(float)).join(df['即期匯率']['本行買入'].astype(float))
re_df.columns = ['幣別', '本行買入', '本行賣出']
re_df.index = re_df['幣別']
re_df['中間匯率'] = (re_df['本行買入'] + re_df['本行賣出']) / 2 # 計算中間匯率 (買+賣)/2
print(day, re_df) # 顯示
用pandas裡面的read_html(url)就可以抓到HTML的表格
data = pandas.read_html(url)
欄名有相反的狀況記得反過來
re_df.columns = ['幣別', '本行買入', '本行賣出']
要轉成浮點數才能計算中間匯率
re_df = re_df.join(df['Unnamed: 3_level_0']['本行賣出'].astype(float)).join(df['即期匯率']['本行買入'].astype(float))
四、後記
大家pandas.read_html(url)是一個非常好用的工具,想取得什麼樣的資料可以告訴我唷!,如果大家有共同需求肯定帶給大家手把手教學。
部落格教學網站:
https://pixnashpython.pixnet.net/blog
想要即時訂閱最新文章:
https://forms.gle/MdXmiF2HgHhNChL46
訂閱Telegram來接收最新資訊:
https://t.me/joinchat/VUUuDt67Uq5l6CIQ
留言列表