close

【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 兩組字串組成。

 

image

 

 

三、抓取匯率資料


簡單分成三步驟,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))

 

image

 

 

四、後記


大家pandas.read_html(url)是一個非常好用的工具,想取得什麼樣的資料可以告訴我唷!,如果大家有共同需求肯定帶給大家手把手教學。

 

部落格教學網站:
https://pixnashpython.pixnet.net/blog
想要即時訂閱最新文章:
https://forms.gle/MdXmiF2HgHhNChL46
訂閱Telegram來接收最新資訊:
https://t.me/joinchat/VUUuDt67Uq5l6CIQ

arrow
arrow
    創作者介紹
    創作者 恩哥Python 的頭像
    恩哥Python

    恩哥Python量化教室-零基礎也能學會Python

    恩哥Python 發表在 痞客邦 留言(0) 人氣()