楼主: DoAlchemy
15723 19

[原创博文] 如何通过Python获取外汇数据 [推广有奖]

  • 0关注
  • 3粉丝

已卖:22份资源

硕士生

17%

还不是VIP/贵宾

-

威望
0
论坛币
4742 个
通用积分
11.1904
学术水平
3 点
热心指数
4 点
信用等级
1 点
经验
2523 点
帖子
110
精华
0
在线时间
127 小时
注册时间
2016-9-8
最后登录
2024-12-17

楼主
DoAlchemy 发表于 2016-9-18 18:11:48 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

如何通过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



二维码

扫码加我 拉你入群

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

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

关键词:python exchangerate time-series historical Currencies Forever finance python world 汇率

回帖推荐

juliewong 发表于5楼  查看完整内容

关注了,谢谢

沙发
juliewong 在职认证  发表于 2016-9-18 18:42:57
谢谢分享
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
DoAlchemy + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

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

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

报纸
juliewong 在职认证  发表于 2016-9-18 20:11:57
关注了,谢谢

地板
DoAlchemy 发表于 2016-9-18 20:19:29
juliewong 发表于 2016-9-18 20:11
关注了,谢谢
非常感谢~~

7
Untilu 发表于 2016-9-18 22:33:11
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
DoAlchemy + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

8
3dimensions 发表于 2016-9-18 23:17:02
好文...
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
DoAlchemy + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

9
DoAlchemy 发表于 2016-9-18 23:55:29
3dimensions 发表于 2016-9-18 23:17
好文...
谢谢,欢迎关注微信公众号~~~
确实花了很多时间做这个东西,有人关注更新的动力更加充足!!

10
DoAlchemy 发表于 2016-9-18 23:57:23
Untilu 发表于 2016-9-18 22:33
谢谢支持~~欢迎关注

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-3 13:50