任意通貨間、指定日の為替レートを調べる方法
まとまった数の通貨間の指定日での為替レートを調べたいということが起きた。
pyhonライブラリ
PYTHONにそんなライブラリがあるだろうと思って、調べてみると、やっぱりあった。
currency_converter だ。
#!python import sys from currency_converter import CurrencyConverter from datetime import date c = CurrencyConverter() if len(sys.argv)==4 : cu_numerator=sys.argv[1] cu_denominator=sys.argv[2] cu_date=sys.argv[3] ymdstr=cu_date.split("/") ymdi=list( map(int,ymdstr) ) else: print ("Error! ARGV.size",len(sys.argv)) print(c.convert(1, cu_denominator, cu_numerator, date=date(ymdi[0], ymdi[1], ymd # Error の時は、日付を平日に変える
しかし、これには大きな問題がある(23/07/31)。対応している通貨が限られている。
カンボジアとかは出てこない。
exchange-rate サイトを活用する方法
いろんな銀行が、為替レートを紹介しているが、
あらゆるものに対応しているものが、なかなか無い。
そんな中、www.exchange-rates.org が完全性が高いようである。
換算先=換算元×レート
で、換算先、元の通貨IDと、年を入れると、1年分のレートの表が出てくる。
この中から指定日のものを探せばよい。
これを、bs4を使って調べることにした。
#!/usr/bin/python import requestsfrom bs4 import BeautifulSoup import sys #wordsets="JPY,USD,2020/07/01".split() wordsets=list(sys.argv)[1:100] #print (wordsets) for wordset in wordsets: words=list(wordset.split(",") ) nume=words[0] defl=words[1] ymdstr=words[2] ymdsr=list(ymdstr.split("/")) ysr=ymdsr[0] msr=int(ymdsr[1]) dsr=int(ymdsr[2]) # url="https://www.exchange-rates.org/ja/exchange-rate-history/jpy-khr-2021" url="https://www.exchange-rates.org/ja/exchange-rate-history/"+nume+"-"+defl res = requests.get(url,timeout=(3.0,7.5)) soup = BeautifulSoup(res.text, "html.parser") itbl=1 tbl=list(soup.select("table"))[itbl] trs=tbl.select("tr") for j,tr in enumerate(trs): tds=tr.select("td") if len(tds)==2: date=list(tds[0].select("a"))[1].text #date ymds=list(date.split("/")) m=int(ymds[1]) d=int(ymds[2]) if m==msr and d==dsr: #日付が一致する場合 rate=list(tds[1].select("span"))[2].text # rate strings orate=list(rate.split(" "))[0] print (orate)