Excel"宗师"技巧: 高效"爬虫", Excel也能做到!

2018-08-10 14:02:30 164点赞 1571收藏 78评论

炎炎夏日,突然灵机一动,我们是否可以使用excel获得上海历史若干年的天气数据呢? 想好了就动,先查查互联网吧! (注:今天的文章步骤和截图相对较多)

Excel\"宗师\"技巧: 高效\"爬虫\", Excel也能做到!

突然找到这么一家网站,看上去是包含我们想要的数据的

Excel\"宗师\"技巧: 高效\"爬虫\", Excel也能做到!

数据包含历史每一天的最高温,最低温,天气,风向和风力

Excel\"宗师\"技巧: 高效\"爬虫\", Excel也能做到!

观察URL构成 shanghaitianqi

Excel\"宗师\"技巧: 高效\"爬虫\", Excel也能做到!

如果选择了2017年1月的天气查询数据,URL就会变成这样子

Excel\"宗师\"技巧: 高效\"爬虫\", Excel也能做到!

那么可以简单推断,历史数据的获得可以通过以下通项:

Https://15tianqi.cn/[YEAR]shanghai[MONTH]yuetianqi/

接下来让我们开始“爬虫”吧!


步骤1,让我们打开一个Excel,并且选择从网络获取数据

Excel\"宗师\"技巧: 高效\"爬虫\", Excel也能做到!

这里在高级选项中把我们的URL中可变的部分(以后要作为参数)分割出来

Excel\"宗师\"技巧: 高效\"爬虫\", Excel也能做到!

点击链接来获得数据

Excel\"宗师\"技巧: 高效\"爬虫\", Excel也能做到!

步骤2,选择table 0 并且点击编辑来编辑数据

Excel\"宗师\"技巧: 高效\"爬虫\", Excel也能做到!

可以看到数据包含一些说明行和分表的字段名。

Excel\"宗师\"技巧: 高效\"爬虫\", Excel也能做到!

步骤3, 让我们做一些过滤,这里主要为了删除多余的行数

Excel\"宗师\"技巧: 高效\"爬虫\", Excel也能做到!

步骤4, 用第一行作为表头,这样我们的数据表就有正确的表头了

Excel\"宗师\"技巧: 高效\"爬虫\", Excel也能做到!

再过滤掉其他重复的信息,因为日期已经作为表头了,那么其它行中的带有字符“日期”的行数就可以删除了!

Excel\"宗师\"技巧: 高效\"爬虫\", Excel也能做到!

阶段性成果好啦,看到我们已经获得了一个月(如最开始输入的 2017年1月)的数据

Excel\"宗师\"技巧: 高效\"爬虫\", Excel也能做到!

步骤5, 我们根据气温的数据来制作两个新的字段,数据类型,方便以后运算

Excel\"宗师\"技巧: 高效\"爬虫\", Excel也能做到!

修改为数值型

Excel\"宗师\"技巧: 高效\"爬虫\", Excel也能做到!

最高温和最低温都修改出来 (这里PowerQuery会自动提取数值,很方便!!)

Excel\"宗师\"技巧: 高效\"爬虫\", Excel也能做到!

并且所有的调整步骤都会被记录下来(这也是为什么上篇文章说有了PowerQuery,可以告别VBA了)

Excel\"宗师\"技巧: 高效\"爬虫\", Excel也能做到!

步骤6, 下来让我们来制作两个参数

Excel\"宗师\"技巧: 高效\"爬虫\", Excel也能做到!

分别命名为【年】和【月】,注意 !!类型 需要是【文本型】,因为要拼接URL用!!!

Excel\"宗师\"技巧: 高效\"爬虫\", Excel也能做到!

步骤7, 双击查询的源(Source),来做修改

Excel\"宗师\"技巧: 高效\"爬虫\", Excel也能做到!

把刚才我们填写 2017 和 1 的地方分别修改成我们建立的参数【年】和【月】

Excel\"宗师\"技巧: 高效\"爬虫\", Excel也能做到!

步骤8, 鼠标右键Table 这个查询,并创建函数

Excel\"宗师\"技巧: 高效\"爬虫\", Excel也能做到!

命名函数为 HDTQ (这里随意,我是取了【获得天气】的首字母)

Excel\"宗师\"技巧: 高效\"爬虫\", Excel也能做到!

创建完成可以看到多了一个函数列在查询侧边栏里面,并且有两个可以输入参数值的位置

Excel\"宗师\"技巧: 高效\"爬虫\", Excel也能做到!

步骤9, 让我们用新的值, 2016年1月来测试以下有没有数据返回

Excel\"宗师\"技巧: 高效\"爬虫\", Excel也能做到!

可以看到数据正常获取到了

Excel\"宗师\"技巧: 高效\"爬虫\", Excel也能做到!

第二个阶段性成果好啦! 接下来我们要一次性获取更多月份数据了!

步骤10, 我们关闭Power Query 并返回到工作簿中-去创建我们需要使用的参数值列表!!

Excel\"宗师\"技巧: 高效\"爬虫\", Excel也能做到!

步骤11, 创建两个表,包含你要获得的数据的年份和月份并且导入到Power Query中

Excel\"宗师\"技巧: 高效\"爬虫\", Excel也能做到!

导入以后的样子,会多两个表

Excel\"宗师\"技巧: 高效\"爬虫\", Excel也能做到!

步骤12,我们需要把Year这张表和Month这张表强行并在一起

Excel\"宗师\"技巧: 高效\"爬虫\", Excel也能做到!

步骤13,展开MONTH可以获得所有的列联结果

Excel\"宗师\"技巧: 高效\"爬虫\", Excel也能做到!

相当于Cross Join 的结果集

Excel\"宗师\"技巧: 高效\"爬虫\", Excel也能做到!

步骤14,移除空值等不相干数据

Excel\"宗师\"技巧: 高效\"爬虫\", Excel也能做到!

步骤15,对新生成的表中的数据使用我们之前创建好的函数HDTQ

Excel\"宗师\"技巧: 高效\"爬虫\", Excel也能做到!

按顺序选择好对应的字段名称来作为参数

Excel\"宗师\"技巧: 高效\"爬虫\", Excel也能做到!

有时候我们会遇到一些警告,可能是一些安全设置导致的

Excel\"宗师\"技巧: 高效\"爬虫\", Excel也能做到!

勾选忽略Privacy Level

Excel\"宗师\"技巧: 高效\"爬虫\", Excel也能做到!

这个时候我们就可以看到对应到每个月的数据表都顺利获得了

Excel\"宗师\"技巧: 高效\"爬虫\", Excel也能做到!

步骤16,展开数据表我们就可以看到数据了

Excel\"宗师\"技巧: 高效\"爬虫\", Excel也能做到!

步骤17, 把数据导入到工作簿中,我们选择一个新的工作页

Excel\"宗师\"技巧: 高效\"爬虫\", Excel也能做到!

大功告成!! 可以看到我们想要的天气数据都顺利输出到Excel 工作簿中了

Excel\"宗师\"技巧: 高效\"爬虫\", Excel也能做到!

下来,你就可以利用这些数据来研究研究上海的历史天气,气温了。


在任何步骤遇到问题都可以留言,我们会尽力回复的!


展开 收起
78评论

  • 精彩
  • 最新
  • smzdm?我还以为我打开了知乎

    校验提示文案

    提交
    那么 是好还是不不好呢?

    校验提示文案

    提交
    收起所有回复
  • Excel高级检索也能叫爬虫?怕是对网页爬虫有什么误解吧

    校验提示文案

    提交
    You can you up

    校验提示文案

    提交
    可以,我离职前月薪折合时薪是80左右,你付我三个小时薪水我给你up一个

    校验提示文案

    提交
    还有14条回复
    收起所有回复
  • 真是高阶操作,

    校验提示文案

    提交
    谢谢 对您来讲有益就是好的

    校验提示文案

    提交
    收起所有回复
  • @FuninCode 步骤3的过滤器怎么调出来的?

    校验提示文案

    提交
    点一下字段旁边的向下小箭头 里面会有选项

    校验提示文案

    提交
    收起所有回复
  • Filter rows 在哪里?

    校验提示文案

    提交
    PQ 里面点字段上面的小箭头 有选项

    校验提示文案

    提交
    找到了,谢谢

    校验提示文案

    提交
    收起所有回复
  • 这是什么版本的excel啊

    校验提示文案

    提交
    我的是 Office 365, 理论上 Excel 2016 就开始自带了, 2010 & 2013 需要下载安装 PowerQuery

    校验提示文案

    提交
    收起所有回复
  • 门外汉如何自学python?

    校验提示文案

    提交
    慕课网有很多教程

    校验提示文案

    提交
    code combat

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 中文界面都得琢磨半天,英文就...

    校验提示文案

    提交
    嗯 我们这一批的文章发送完以后 会改为中文的

    校验提示文案

    提交
    收起所有回复
  • 这个严格意义上来说。。。。叫爬虫吗?

    校验提示文案

    提交
    看大家怎么定义了 其实能够自动的按照规律从不同网页上获取信息就可以说是爬虫,但大家如果非要武装上这个编码那个算法的就不好说了

    校验提示文案

    提交
    我觉得。。。这个离爬虫还是比较遥远。。。。目测一大波程序员喷子要到场。

    校验提示文案

    提交
    收起所有回复
  • 楼主你信不信我英语过8级,不信?那你还用英文界面 [小怒] [小怒]

    校验提示文案

    提交
    这几篇发完了 后面我们就都改为中文的

    校验提示文案

    提交
    收起所有回复
  • 这贴写的是excel导入html 表格. 跟趴网没直接关系.

    校验提示文案

    提交
    标题 吸引一下大家 也了解一下 excel 对于 Web 的table 可以这么操作 不必要 request get select div 这些

    校验提示文案

    提交
    收起所有回复
  • 原理是把网页的标签里面的内容提取出来吗?

    校验提示文案

    提交
    是的 直接把网页中的 table 抽取了

    校验提示文案

    提交
    收起所有回复
  • 这东西叫power pivot

    校验提示文案

    提交
    Power Query

    校验提示文案

    提交
    收起所有回复
  • 据说绝大部分office用户都是只用到5%的功能而已

    校验提示文案

    提交
    嗯嗯 所以需要给大家点小tips

    校验提示文案

    提交
    收起所有回复
  • 希望出更多好文

    校验提示文案

    提交
    会按节奏推出的

    校验提示文案

    提交
    收起所有回复
  • 有点厉害,紫薯布丁

    校验提示文案

    提交
    Power Query 还是不错的 不用编码

    校验提示文案

    提交
    收起所有回复
  • 不错,实用 [棒棒哒] 打赏收藏关注

    校验提示文案

    提交
    非常感谢!

    校验提示文案

    提交
    收起所有回复
  • 我想知道excel莫名卡了,重装也没用,有办法解决吗

    校验提示文案

    提交
    看看是不是 32bit的 直接升级到 64bit

    校验提示文案

    提交
    收起所有回复
  • 我去,果然是精英,都是用的英文界面。 [观察]

    校验提示文案

    提交
    power bi套件就没中文的

    校验提示文案

    提交
    现在倒是有的 只是我电脑一直用的英文

    校验提示文案

    提交
    收起所有回复
  • 马克了,想好好学习一下

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
1.5K
扫一下,分享更方便,购买更轻松