其他分享
首页 > 其他分享> > 一步一步教你PowerBI利用爬虫获取天气数据分析

一步一步教你PowerBI利用爬虫获取天气数据分析

作者:互联网

  对于爬虫大家应该不会陌生,我们首先来看一下爬虫的定义:网络爬虫是一种自动获取网页内容的程序,是搜索引擎的重要组成部分。网络爬虫为搜索引擎从万维网下载网页,自动获取网页内容的应用程序。看到定义我们应该已经知道它是可以从万维网上下载网页解析网页数据的。大家想一下在数据分析情景中它的应用场景有哪些?采集天气数据,网站采集文章,采集各种票务信息,股票信息采集等等有很多地方都会用的爬虫采集数据进行数据分析。通过数据分析增加分析维度信息,尤其是行业数据对标。

  提及爬虫有些软件工程师会第一时间想到Python。Python确实是非常方便的开发软件,会附带大量的依赖库,可以非常简单快速构建爬虫应用程序目前有一些框架只需要写提取规则就可以实现数据提取。我们这里要讲的爬虫是针对PowerBI软件中创建的采集天气数据爬虫程序。很多行业会受天气影响较大,如果能够知道某地区的天气数据历史记录,就可以让销售数据的维度更加丰富。从而给决策者判断问题时做出更好的参考。接下来小黎子将以湖北省主要城市为例,带领大家一起实现PowerBI构建爬虫抓取天气数据历史记录。本案例的数据源来自于网络-天气后报,网页中的数据最简单的一种形式就是表格。通过本文大家可以和我一样实现下图的天气报告

 

一、分析网站的URL结构

1、确定城市列表URL数据

我要分析的数据是湖北省主要城市的天气,首先在天气后报网站中找到历史天气,点击进入后找到湖北省

 

 

2、确定城市的URL信息

打开任意一个城市的界面,可以单独页面内容为武汉市各年度历史天气列表。主要URL中有WUHAN字符。这里我们可以确定每个城市的链接都存在着相同的规律。

3、确定月份的URL信息

点击上图的任意月份,进入月份的天气列表页。通过分析URL地址我们也可以看到规律。URL中城市拼音加年月的变量可以获得各个城市各个月份每天的天气状况。

 

 

二、构建爬虫主体

在分析URL过程中我们已经找到了网页URL的规律,因此,我们可以建立城市列表和日期列表。将两个参数引入URL,从而抓取城市不同时间的天气数据。注意,历史天气数据是回顾过去的,天气预报也是一样的分析思路。

1、建立城市列表

 

 

2、建立日期列表

在城市列表中添加开始日期

 

 

结束日期

 

 

日期,注意这里需要将日期转换为数值,提取完成后再转换为日期

 

 

展开日期列数据,将格式更改为日期类型

 

 

添加年月列

 

 

提取年和月数据用于后续切片器

 

 

删除重复项

 

 

3、将我们处理好的数据赋值到URL中

城市列表和日期列表都已经处理好了,下一步就是处理两个列表和URL的关联关系

新建URL自定义列

 

 

忽略隐私检查

 

 

展开URL列,选择Source和Data列即可

 

 

展开Data列,只保留前四列数据

 

 

删除多余的内容,筛选去除标题和空白行

 

 

拆分气温为最高和最低气温,按分隔符/拆分

 

 

去除温度符号℃,用于转换为数值

 

 

处理后

 

 

到这里我们已经完成了爬虫的数据清洗工作,接下来就开始进入可视化报告制作。

注意:由于起始日期为2011-1-1下载的数据量比较大,需要等待很长时间。大家可以将起始日期更改为2019-1-1以后的日期加载数据会比较快一点。

 

三、制作可视化报告

1、制作年份,月份,城市切片器。城市切片器注意设置方向为水平方向

2、气温趋势线

3、天气明细矩阵表

 

 

4、区域地图

大家可以根据自己的喜好调整不同的主题颜色

 

四、总结

我们顺利完成了抓取湖北省各个城市的2019年的历史天气数据。在使用PowerBI爬虫应用时需要注意的点:

1、分析URL规律是开始处理爬虫的最重要的环节

2、通过PowerBI输入数据功能建立城市列表和使用M函数建立日期列表。

3、两个列表结合处理URL地址解析对应的天气数据,通过WEB.CONTENTS提取网页内容是爬虫的核心内容。大家可以继续延伸学习M函数的使用方法。

4、在后续的文章中也会出现少量的M函数使用,编辑器中会有智能提示告诉大家使用规则,大家也可以通过微软官网查看M函数的语法。

注意:PowerBI爬虫应用不只是能够解析这种简单的结构,目前有很多的网站后台都是传递的json数据,PowerBI也是可以应对的处理的,只是需要将JSON数据转换为表格。在后续的分析情景中我会进一步来讲解爬虫应用。

标签:一步,URL,爬虫,PowerBI,日期,列表,数据,天气
来源: https://blog.51cto.com/xlzdata/2875857