Power Query以往文章:
Power Query M函数(1)--数据类型及数据结构
PowerQuery M函数2--计算方式与运算符
Power Query M函数(3)--数据类型转换、元数据及错误处理
通过前三节的学习,相信大家已经对M函数的基础知识有了一定的了解,从本节开始,将通过实用案例,为大家逐步介绍M函数的应用方法。
本节将为大家介绍的案例是使用Web.Page与Web.Contents函数从PM2.5历史数据网站上爬取不同城市不同日期的历史大气质量相关数据的方法。本方法适用于通过在Power Query中输入网址便可直接获取到所需数据的情况(本案例是指网页地址中有可见表格数据的情况)。
在进入正文前,先向大家介绍一种简单获取中文函数帮助信息的方法,方法如下:
1. 在Power Query查询编辑器中新建一个空查询
2. 在编辑栏中输入=#shared
3. 点击“到表中”
4. 通过对Name字段进行筛选的方法来获取相关的函数帮助信息
Web.Page与Web.Contents函数说明:
1. Web.Page函数:返回HTML文档的内容(分解为其组成结构),以及完整文档的表示形式及其删除标记后的文本
表达式:Function(html as any) as table
注释:使用Web.Page函数可以获取到HTML形式网页内的相关信息,并以表的形式返回结果
2. Web.Contents函数:将从url下载的内容返回为二进制。可以提供可选记录参数options以指定其他属性。记录可以包含以下字段……(内容较多省略,详细说明请通过#shared查询)
表达式:Function (url as text, optional options as nullable record) asbinary
注释:付给Web.Contents网页地址后,Web.Contents函数可以将网页内的信息以二进制数的形式返回
将两个函数嵌套使用Web.Page(Web.Contents(网址))后变可将网页内的信息最终以表的形式呈现出来。运算逻辑是先用Web.Contents函数获取指定网址内的二进制信息,再用Web.Page函数对二进制信息进行转换、解析,最终获得我们所能够理解的表形式数据。
爬取PM2.5历史数据网页内各城市过去每天的历史大气质量数据:
网页主地址:https://www.aqistudy.cn/historydata/
所需要的日均空气质量数据(以北京2014年1月份为例):
网页地址:https://www.aqistudy.cn/historydata/daydata.php?city=北京&month=2014-01
使用Power Query对上述网页进行爬取的目的是能够批量一次性爬取多个城市各不同月份下的不同日期的大气质量历史数据。
爬取步骤如下:
1. 对网址特点进行分析后,发现只要将city=后边的部分改为想要的城市名,再将month=后边的部分改为想要的月份数字就可以打开不同城市,不同月份下的日历史数据网页
2. 所以我们现在Excel表格界面建一个包含城市名和月份信息的表,并将其添加到Power Query中
3. 将[月份]字段转换为文本型数据
4. 在Power Query编辑器中添加自定义列,内容如下:
公式内容:
Web.Page(Web.Contents("https://www.aqistudy.cn/historydata/daydata.php?city="&[城市]&"&month="&[月份]))
5. 点击“继续”后选择“公共”并保存(数据量较大需耐心等待,练习时建议只做两个城市的数据)
6. 展开自定义字段中的Data
7. 再次展开自定义字段中的相关字段(从日期到排名)
8. 关闭并上载
上述内容就是爬取网页信息的全部步骤。好了,来看一下爬取到的数据吧。
报名用数据说话-Excel BI商业智能分析零基础精讲课程系统学习Excel商业智能分析相关知识