大海:这个得看这个网站的数据查询反馈机制,有的比较简单,有的可能加了很多安全机制,那样就比较复杂。
小勤:那这个看行不行?
大海:嗯。先用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
用法:
参数:
Step-9:展开组合后的Record
Step-10:删掉多余的列
Step-11:上载数据
小勤:这个看起来感觉挺复杂的呢。
大海:怎么说呢,首先是要对网站的结构和脚本有一定的了解,同时,由于网站爬取的数据结构多种多样,所以要学会观察或者让专业的IT人员帮你分析,然后根据实际情况来处理,所以要求对PQ的各项操作都比较熟练。
小勤:嗯。
本文分享自 Excel到PowerBI 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!