全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 python论坛
15503 19
2016-09-18

如何通过Python获取外汇数据

今天在朋友圈看到下图,突然想知道最近汇率的走势如何。因此我用Python尝试了一下之前一篇文章提到的公开数据接口。结果让我非常失望,只有world bank有比较全的汇率数据,但是这些数据频率都是以年为单位的,没有办法观察最近的走势。抱着老司机带路的思想,去网上寻找答案,发现网上大多数老司机的解决办法都是通过Python去Yahoo finance上面写爬虫去爬,这种方法太复杂而且在自己处理的过程中会有很多困难,所以这显然不是一个很好的解决办法。

31821259172105233.jpg


难道就没有其它的办法了么?经过不懈的努力,被我找到了一个很好的网站,它提供python外汇数据接口的API,可以很方便的通过本地操作下载外汇的数据(json格式),今天把这个方法分享给大家。

打开网址 https://openexchangerates.org/,看到如下的页面:

61.png

在使用之前我们要先进行注册,点击Get Instant Access

62.png


一开始把我吓了一跳,我靠竟然要收费!!仔细一看发现有Forever Free,立马点进去开始注册。

63.png



注册完成后,看到自己账户这里有个userID,把这个东西记下来,这个是数据接口识别你的唯一特征。

64.png


点击  ,得到如下页面,在左边一栏有六个获取不同数据的命令,我们对其一一介绍。

65.png



/latest.json:顾名思义,最新的汇率信息,其参数构成如下

66.png


app_id 就是我们之前账户的user_id,

base  即base currency,基准货币,以单位该货币能够兑换多少其它货币,默认的是美元USD

symbols 即选择quote currency,报价货币,默认的是其数据库所有的全部

其网站也给出了如下的示例:

67.png


即我们通过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格式数据

68.png

按照上述命令,我们得到了美元汇率的实时数据(网站上标明这个更新的频率是几个小时)


/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()

69.png

按照上述命令,我们得到了美元在2001-02-16当天汇率的历史数据。

/currencies.json:获取所有国家对应货币的三位简写

payload = {'app_id': 'c1b6bc1b8b894f2ea21c8a73f1684263'}

r = requests.get("https://openexchangerates.org/api/currencies.json", params=payload)

r.json()

610.png

这样我们就可以得到所有国家对应货币的三位字母简写。

/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()

611.png






这里就是我们所说的免费账户悲剧的所在,免费账户没有权限获取时间序列的数据以及改变base和限制symbol。虽然这给我们的使用带来了一些不便,但是我们还是可以通过其它方法获取时间序列的数据,比如利用每天的历史数据进行多次请求来得到时间序列的数据。(但确实没有办法改变基准货币,只能以美元作为基准货币在免费的情况下没有办法克服,但我觉得一般情况下美元的也够用了,毕竟美元才是世界通用货币。)


原文链接 http://mp.weixin.qq.com/s?__biz=MzIwNjU3NDg4Nw==&mid=2247483699&idx=1&sn=305cc51e247bc6796d6da0895e23f3aa&scene=0#wechat_redirect


欢迎大家关注我的公众号 DoAlchemy

qrcode_for_gh_d44517b97e14_344.jpg



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2016-9-18 18:42:57
谢谢分享
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-9-18 19:38:25
juliewong 发表于 2016-9-18 18:42
谢谢分享
感谢支持,欢迎关注我的公众号~~~之后还会有很多实用的分享。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-9-18 19:38:34
juliewong 发表于 2016-9-18 18:42
谢谢分享
感谢支持,欢迎关注我的公众号~~~之后还会有很多实用的分享。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-9-18 20:11:57
关注了,谢谢
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-9-18 20:19:29
juliewong 发表于 2016-9-18 20:11
关注了,谢谢
非常感谢~~
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群