前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PQ-综合实战:爬取人民币汇率中间价

PQ-综合实战:爬取人民币汇率中间价

作者头像
大海Power
发布2021-08-30 09:52:21
8720
发布2021-08-30 09:52:21
举报
文章被收录于专栏:用户8950297的专栏

小勤:我现在做数据分析需要用一段时间的人民币汇率中间价,这些数据在中国外汇交易中心网站上都有,能直接爬下来吗?

大海:这个得看这个网站的数据查询反馈机制,有的比较简单,有的可能加了很多安全机制,那样就比较复杂。

小勤:那这个看行不行?

大海:嗯。先用google浏览器打开网站,然后通过【检查】功能看一下“查询”按钮的源代码是怎么设计的。

代码如下:

从这里可以看出,查询按钮点击后,会调用search函数(一段javascript脚本)来完成查询功能。我们找一下search函数来看看——这个还好,居然就在同一段代码内:

代码里的url很清晰,即(前加网站地址http://www.chinamoney.com.cn)/dqs/rest/cm-u-pt/CcprHis?加上startDate及endDate两个参数,而且返回的数据类型为Json。

由此,比如我们要查询2017年1月1日至2017年9月30日的数据,完整的路径为:http://www.chinamoney.com.cn/dqs/rest/cm-u-pt/CcprHis?startDate=2017-01-01&endDate=2017-09-30

得到这个查询路径后,我们就可以在Power Query里建立查询获得数据了:

Step-1:新建查询

数据应该都接进来了,但封装成了一系列的Record和List:

接下来就要通过观察里面的数据情况,我们发现,表头在data的Record里,而数据在records的List里,这种情况下,我们要先把表头的内容展开,然后展开数据的List,最终形成表头和数据一一对应的情况,再进行组合。具体整理过程如下:

Step-2:将识别出来的数据转换为表

Step-3:转置

Step-4:提升标题

Step-5:展开data中的记录(Record)

Step-6:展开records数据列表

Step-7:进一步展开records中的Record

这个时候,得到了每一天的表头跟数据,如下:

Step-8:添加自定义列,组合表头和数据的List,公式=Record.FromList([records.values],[data.head])

函数Record.FromList,将2个List组合成行记录Record

用法:

  • Record.FromList(数据列表,字段名列表)

参数:

  • 数据列表:一行记录里的数据
  • 字段名列表:记录的标题行,即各字段数据所对应的字段名

Step-9:展开组合后的Record

Step-10:删掉多余的列

Step-11:上载数据

小勤:这个看起来感觉挺复杂的呢。

大海:怎么说呢,首先是要对网站的结构和脚本有一定的了解,同时,由于网站爬取的数据结构多种多样,所以要学会观察或者让专业的IT人员帮你分析,然后根据实际情况来处理,所以要求对PQ的各项操作都比较熟练。

小勤:嗯。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-10-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Excel到PowerBI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 小勤:我现在做数据分析需要用一段时间的人民币汇率中间价,这些数据在中国外汇交易中心网站上都有,能直接爬下来吗?
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档