背景需求
先说一下问题背景:
http://www.pm25.in/shenzhen 这个网站可以查看到深圳各个区的空气质量信息,每个小时更新一次。
需求:把里面的表格信息快速提取并且保存。
Excel可以通过数据 – 自网站这个功能实现简单网页表格数据爬取,想必不少朋友都应该知道并且使用过。
这个方法对于一些简单的网页来说,还是很实用的。但是对于某些网页,就比如pm25.in,用上面的方法则会不太方便,如下图:
直接选中表格上方的√,无法导入。
而如果直接勾选整个页面的话,又会提取到除了表格之外的很多无用的信息。
效果演示
那么,这种情况呢,可以借助vba来灵活的解决这个问题。
先上效果:点击“更新”,直接提取表格信息
然后点击“保存汇总”,将该时刻提取到的信息保存到汇总表,方便后续使用。
核心代码
这整个过程其实不难,其中抓取表格数据最核心的功能代码就是下面这些,每一行代码的含义永恒君都标注在后面了。
如果要更换其他城市,只需要更改URL地址即可。
With Sheets(1).QueryTables.Add("URL;http://www.pm25.in/shenzhen", Range("A2")) '抓取网站网页地址
.RefreshStyle = xlOverwriteCells '覆盖模式
.WebFormatting = xlWebFormattingAll '包含全部格式
.WebSelectionType = xlSpecifiedTables '指定table模式
.WebTables = "1" '第1张table
.Refresh False
End With
之后的保存、汇总就是一些常规的vba代码了。
需要说明的是:这个代码只适用于,网页源代码中包含有表格数据的网页。
如果你对这个内容感兴趣的话,可以在公号内回复「网页表格」获取vba文件进行试用吧~~
你可能还会想看:
VBA实例(35) – 一键批量ppt转pdf
VBA 实例(34) – – 快速匹配出名称不完全相同的数据
VBA 实例(33) – 一键提取word中加粗文字
VBA 实例(32) – 批量替换隐藏的神秘字符
VBA 实例(31) – 为VBA代码自定义快捷键
VBA 实例(30) – 为多个sheets创建目录和超链接
个人博客:www.yhjbox.com