简介

本篇案例主要介绍如何通过power BI 构建爬虫抓取历史天气数据

数据爬取

如何从power bi 获取网页的数据

首先,打开需要爬起天气数据的网站,点击历史天气,之后可以看到全国各个省份和城市的列表
http://www.tianqihoubao.com/
全国省份和城市列表
大家可以根据自己想要爬取的城市来自由选择

选择好城市之后,会列出该城市从2011年1月一直到目前的所有的天气数据,选择想要查看的年月分的连接,下面以郑州2019年1月为例


打开之后如下,显示这个月每一天的具体日期,天气状况,气温,风力风向

如果是只想爬取这一页的数据,打开 power bi ,在获取数据里面选择 其他 – web

然后把连接地址粘贴上去点击确定


之后power bi 会自动分析网页,提取出数据信息
选择左边的表直接加载数据就ok了

这样抓取一页的数据太简单了。

下面咱们要做的是如何才能批量抓取数据

分析URL

通过点击不同城市和日期的连接,分析URL的变化规律

# 郑州
http://www.tianqihoubao.com/lishi/zhengzhou/month/201803.html
http://www.tianqihoubao.com/lishi/zhengzhou/month/201901.html
http://www.tianqihoubao.com/lishi/zhengzhou/month/201904.html
# 鹤岗
http://www.tianqihoubao.com/lishi/hegang/month/201101.html
http://www.tianqihoubao.com/lishi/hegang/month/201108.html

可以发现有变化的地方只有城市名称和日期,

http://www.tianqihoubao.com/lishi/[城市名称]/month/[日期].html

那么我们就只需要设置【城市名称】和【日期】两个变量。就可以构建不同的城市和日期的天气页面的URL地址,有了URL地址就可以批量抓取多个城市,多个年份月份的天气数据了

构建爬虫

我门可以直接在power bi 中构建城市日期的列表,这样的话当需要更新数据的时候只需要在power bi 内部修改数据并刷新就可以得到最新的数据了

创建城市列表
  • 打开power bi,选择【输入数据】,输入想要爬取的城市名称和所对应的拼音,

  • 点击右上的 + 号,为添加新的一列

  • 点击左下的 + 号,为添加新的行

  • 列名可以双击来更改

  • 下面蓝线标注的地方为表名

  • 数据都设置好后,点击【编辑】,进行下一步日期的输入

创建日期列

日期列的创建可以通过 M 函数 #date 来创建
创建一个起始日期和一个结束日期,然后对这两个日期进行运算,得出起始日期和结束日期中间的所有的日期

先创建一个起始日期,在【添加列】选项下,点击【自定义列】,输入列名和日期公式,点击确定,如下:

然后创建一个结束日期,在【添加列】选项下,点击【自定义列】,输入列名和日期公式,点击确定

添加完成后的结果如下:有四列数据 城市名称 城市拼音 起始日期 结束日期

因为URL中用到的是年份和月份
下面添加所需要的年份和月份的列
首先,计算出起始日期到结束日期每一天的日期
点击【添加自定义列】输入如下公式

添加完之后展开此列,选择【扩展到新行】

展开之后如下,并不是显示的日期的形式,需要把这一列的类型改为日期

在【每日日期】上面点击–右键–选择【更改类型】-- 选择【日期】,转换之后如下:都已经转换为日期形式了


因为URL里面所用的是年和月的数据,还需要进一步对日期数据进行处理
我们可以使用 Date.ToText 来对日期进行转换,
添加一个新的自定义列,公式如下:

转换之后如下,此时就是我们需要的年月的格式了

下面我们再通过【每日日期】列 来提取出【年】和【月】的数据,方便后面做筛选的时候用。
提取出年的列,选中【每日日期】列,点击上方选项菜单的日期选项,选中【年】–在选中【年】点击

提取出月的列,选中 【日期】选中,选中【月】–在选中【月】点击

完成之后如下显示:

下一步删除用不到的数据【起始日期】,【结束日期】,【每日日期】

删除完之后选中所有的列,在列标签上点击右键,选择【删除重复项】。去重,之后所需要的数据基本就准备完成了

所需要的数据基本就准备完成了

构建动态URL地址来获取数据

选择添加新的【自定义列】,输入公式如下。
在输入的时候要注意【城市拼音】和【URL日期】的格式需要设置为“文本”,

而且数据中不要有空格等符号,要不然会获取不到数据

注意

再获取数据是出现隐私级别警告时,设置如下

输入完成后,点击确定,然后需要等一段时间获取数据,(数据量越大等待时间越长)
加载完成后新的列为一个table数据,下一步,我们需要展开数据

点击右边上的展开按钮,选择 Caption 和 Data两个选项 点击确定

展开后的数据如下:拆开了两列,后面data列还是一个表 需要继续拆分

先取消勾选 Document选项

然后,点击展开按钮,选择Column1,2,3,4点击确定,展开数据

展开后再 Column1列里面取消勾选 日期

最后后我门就能看到爬取到的天气信息,如下

power BI 天气数据爬取相关推荐

  1. Scrapy全国历史天气数据爬取

    Scrapy全国历史天气数据爬取 历史天气网站http://www.tianqihoubao.com/lishi/ 1.解析网页 我们要爬取每个城市,近10年的历史天气数据,我们需要进到每个城市历史数 ...

  2. Python爬虫 —— 以北京天气数据爬取为例

    本文以北京天气为例讲解数据爬取的整个流程,不涉及网络爬虫的原理,直接讲爬取代码怎么写! 1.首先找到你要爬取的网站url:'http://www.tianqihoubao.com/lishi/beij ...

  3. R语言某一年各省各月份天气数据爬取

    因为项目需要,在此,本人用R语言对某一年各省的省会各月份天气数据进行爬取.想爬取其他城市的数据也是大同小异. 本次爬取的天气数据包括"日期","天气状况",&q ...

  4. python实现天气数据爬取实现数据可视化和天气查询gui界面设计

    在学校大一实训中,我的实训项目就是使用python爬取天气数据并且实现gui图形界面的设计. 实训结束了,希望自己的代码可以帮助大家的学习.(代码是大一时候写的,比较青涩,大家多包涵) 第一个部分是g ...

  5. 全国历史天气查询/历史天气预报查询——全国各月份数据爬取

    全国历史天气查询/历史天气预报查询--全国各月份数据爬取 效果 图1 目标爬取数据 图2 最终实验效果 实验效果:最终可将官网已有的数据进行爬取整理,共363个城市,从2011年1月--至今 数据已上 ...

  6. python爬取历史天气_Python 爬取历史天气数据

    Python 爬取历史天气数据 作者:梅昊铭 1. 导读 之前Mo给大家分享过杭州历年天气情况的数据集,相信有不少小伙伴好奇这些数据是怎么获取.今天Mo就来教大家如何使用Python来进行历史天气数据 ...

  7. [Python]网站数据爬取任务

    Python爬虫作业:网站数据爬取任务 从以下网址(包括但不限于下列网络或应用)中爬取数据,以核实的形式存储数据,并进行分析(不一定是计算机角度的分析,可写分析报告),或制作词云图. 一.文本数据 酷 ...

  8. 基于python的数据爬取与分析_基于Python的网站数据爬取与分析的技术实现策略

    欧阳元东 摘要:Python为网页数据爬取和数据分析提供了很多工具包.基于Python的BeautifulSoup可以快速高效地爬取网站数据,Pandas工具能方便灵活地清洗分析数据,调用Python ...

  9. Excel 数据爬取

    b站视频来源 数据获取 Excel 数据爬取高级功能 实操过程 第一步.获取浏览器标识(UserAgent) 谷歌为例: 右键--检查--Network--重新加载网页--点击下面第一个网页信息--h ...

最新文章

  1. AI 真的会带来大规模失业吗?
  2. 神经植入物是如何工作的?
  3. mysql 剔除字段空格
  4. 从C#2.0的角度看.NET 2.0类型系统
  5. 构造类斐波那契数列矩阵
  6. ssh 免密_Linux下配置SSH免密通信 “sshkeygen”的基本用法
  7. java ssh cpu_初学Java ssh之Spring 第四篇
  8. 这些年无处安放的博客
  9. 精简版_翻译软件,基于百度翻译api
  10. r720换固态硬盘后如何重装系统_联想R720重装Winddows10无法识别固态硬盘咋办
  11. EMQ荣获工信部第五届“绽放杯”5G 应用 征集大赛智慧金融专题一等奖
  12. Python实现三维数据(x, y, z)的索引——即通过(x, y)的值索引z的值
  13. Nginx的超时keeplive_timeout配置详解
  14. java自动识别图片验证码插件_JMeter开发插件——图片验证码识别
  15. 再学一遍android:fitsSystemWindows属性
  16. 混合计算题300道_混合这道美丽人生鸡尾酒配方
  17. C++:上机练习(C++实现)
  18. 如何通俗易懂地理解平面电磁波的极化?—— 看这篇文章就足够了!(多图配合,生动形象)
  19. APP全流程框架总结
  20. 腾讯微信公开课分享的所有精华都在这里了(PPT都截了啊!)

热门文章

  1. MySQL 的悲观锁和乐观锁如何使用?
  2. [shiro] - 加入rememberMe功能
  3. 极光大数据告诉你,程序员们都在愁些啥?
  4. 二维码生成及识别接口
  5. Ubuntu 出现结构需要清理 (structure needs cleaning)
  6. 仿斯坦福四足机器人的运动学逆解
  7. opencv自动拍照程序
  8. 百望云服务器显示二个,百望云-文档中心
  9. VOC/YOLO/COCO数据集格式转换及LabelImg/Labelme/精灵标注助手Colabeler标注工具介绍
  10. PS教程新手入门(二)--保存清晰透明的.Png格式图片的方法和技巧教程