如何通过Python获取外汇数据
今天在朋友圈看到下图,突然想知道最近汇率的走势如何。因此我用Python尝试了一下之前一篇文章提到的公开数据接口。结果让我非常失望,只有world bank有比较全的汇率数据,但是这些数据频率都是以年为单位的,没有办法观察最近的走势。抱着老司机带路的思想,去网上寻找答案,发现网上大多数老司机的解决办法都是通过Python去Yahoo finance上面写爬虫去爬,这种方法太复杂而且在自己处理的过程中会有很多困难,所以这显然不是一个很好的解决办法。
难道就没有其它的办法了么?经过不懈的努力,被我找到了一个很好的网站,它提供python外汇数据接口的API,可以很方便的通过本地操作下载外汇的数据(json格式),今天把这个方法分享给大家。
打开网址 https://openexchangerates.org/,看到如下的页面:
在使用之前我们要先进行注册,点击Get Instant Access
一开始把我吓了一跳,我靠竟然要收费!!仔细一看发现有Forever Free,立马点进去开始注册。
注册完成后,看到自己账户这里有个userID,把这个东西记下来,这个是数据接口识别你的唯一特征。
点击 ,得到如下页面,在左边一栏有六个获取不同数据的命令,我们对其一一介绍。
/latest.json:顾名思义,最新的汇率信息,其参数构成如下
app_id 就是我们之前账户的user_id,
base 即base currency,基准货币,以单位该货币能够兑换多少其它货币,默认的是美元USD
symbols 即选择quote currency,报价货币,默认的是其数据库所有的全部
其网站也给出了如下的示例:
即我们通过Python提交的http命令应是图示中的样子,那通过Python如何实现上述命令呢?我们可以通过requests来实现
import requests #加载requests包
payload = {'app_id': 'c1b6bc1b8b894f2ea21c8a73f1684263'} #在这里设置你的参数
r = requests.get("https://openexchangerates.org/api/latest.json", params=payload) #发送你的http请求
r.json() #显示下载的json格式数据
按照上述命令,我们得到了美元汇率的实时数据(网站上标明这个更新的频率是几个小时)
/historical/*.json:获取历史数据,代码如下
payload = {'app_id': 'c1b6bc1b8b894f2ea21c8a73f1684263'}
r = requests.get("https://openexchangerates.org/api/historical/2001-02-16.json", params=payload)#/latest.json变为/historical/2001-02-16.json
r.json()
按照上述命令,我们得到了美元在2001-02-16当天汇率的历史数据。
/currencies.json:获取所有国家对应货币的三位简写
payload = {'app_id': 'c1b6bc1b8b894f2ea21c8a73f1684263'}
r = requests.get("https://openexchangerates.org/api/currencies.json", params=payload)
r.json()
这样我们就可以得到所有国家对应货币的三位字母简写。
/time-series.json:获取时间序列的汇率数据
payload = {'app_id': 'c1b6bc1b8b894f2ea21c8a73f1684263','start':'2012-01-01',
'end':'2012-01-31','base':'USD'}
r = requests.get("https://openexchangerates.org/api/time-series.json", params=payload)
r.json()
这里就是我们所说的免费账户悲剧的所在,免费账户没有权限获取时间序列的数据以及改变base和限制symbol。虽然这给我们的使用带来了一些不便,但是我们还是可以通过其它方法获取时间序列的数据,比如利用每天的历史数据进行多次请求来得到时间序列的数据。(但确实没有办法改变基准货币,只能以美元作为基准货币在免费的情况下没有办法克服,但我觉得一般情况下美元的也够用了,毕竟美元才是世界通用货币。)
原文链接 http://mp.weixin.qq.com/s?__biz=MzIwNjU3NDg4Nw==&mid=2247483699&idx=1&sn=305cc51e247bc6796d6da0895e23f3aa&scene=0#wechat_redirect
欢迎大家关注我的公众号 DoAlchemy