excelvba抓取网页数据(轻松用Excel获取网页数据的一些初步的爬虫方法(图))
优采云 发布时间: 2021-09-24 06:06excelvba抓取网页数据(轻松用Excel获取网页数据的一些初步的爬虫方法(图))
我们通常使用 Excel,并且经常处理本地数据。您知道如何在 Excel 中进行排序、筛选、条件格式、数据透视表、图表等……但您可能不了解 Excel 是如何获取网页数据的!
网络爬虫?!您可能认为您必须编写代码来实现这一点。其实除了代码,Excel还有一些现成的功能,让你不用代码也能获取网页的数据!
下面的方法中,前三个不需要写代码,最后一个需要代码,但是我已经写好了,可以用了,所以你也可以学习轻松使用Excel来获取一些网页爬虫的初步页面数据方法!
函数方法
从 Excel 2013 版本开始,引入了一些 Web 功能。下面两个函数可以配合使用,帮助我们把网页的数据获取到Excel中。
FILTERXML(xml, xpath),从 XML 数据中返回指定的数据。网页上的许多数据都以 XML 的形式存在。该函数用于提取 XML 中的指定信息。
WEBSERVICE(url),返回网页中的数据,可以理解为这个函数可以得到一堆XML字符串数据。
例如下面的公式使用有道的网站得到翻译结果:
=FILTERXML(WEBSERVICE(";i="&B2&"&doctype=xml&version"),"//翻译")
如果你把上面的公式复制到Excel,你只需要在B2单元格输入你要翻译的内容,公式就会把翻译好的结果返回给你!
是不是感觉超级方便!对于外部数据的轻量级连接,这个函数方法是相当方便的。
除了翻译,使用此功能还可以协助您进行股票交易!我在工作,不方便使用手机或看财经网页,但我想关注实时股价。怎么破解?
把下面的公式复制到B1单元格,然后在A1单元格输入你关注的股票代码,B1可以显示实时股价,想刷新就按F9~
=VALUE(TRIM(MID(SUBSTITUTE(WEBSERVICE(""&A1&"&time="&TEXT(NOW(),"hhmmss")),",",REPT("",99)),2* 99,111)))
当你全神贯注地看着Excel工作(chao)为(gu)时,即使老板突然经过,你也能从容应对!不要让你的老板知道这个技能!
但是你也需要注意使用这个公式。首先,您必须确保您的计算机可以正常连接到互联网。另外,如果有道调整了网页代码或更改了URL入口,则上述公式也将失效。你需要再研究一下逻辑。写公式~
旧版网页查询功能
Excel2016之前一直有获取网页数据的功能,在Excel2016推出PQ后隐藏了,但是还是可以手动调出!
手动调用的方法可以在“选项”中的“数据”中设置其显示,也可以直接按快捷键Alt+D+D+W(注意:在同时,只需按顺序按即可!),然后会弹出如下界面:
然后我们只需要输入网页地址即可。图中地址为#06f01。
这个功能可以帮助我们识别网页中的表格,然后我们只需要选中表格(点击*敏*感*词*箭头选择),点击右下角的导入,然后将数据导入到Excel中即可!
而且还可以刷新这张表,同时支持手动刷新和自动刷新,非常方便~
这种方法的问题是不是所有的网页都能获取到数据,因为你可能无法获取到真实的网址,所以你应该尽量找到最深入的地址。你有爬取的方法,别人有反爬取的方法,所以如果继续获取网页上的数据,需要密切关注网页是否发生了变化~
Power Query 获取网页数据
从 Excel 2016 开始,PQ 已经集成到 Excel 中,并计划用它来代替旧版本的数据查询和获取功能,所以使用 PQ 也可以帮助我们获取网页的数据!
由于*敏*感*词*太大无法上传,我将使用截图来说明步骤:
1、 点击上面的“From 网站”,输入网址,点击“OK”
2、 在出现的导航器中,点击Table开头的图标,右边会有这些表格的预览,选择要导入的表格,点击右下角的“Load”角落
3、 然后就可以把表格数据导出到Excel了,还支持手动刷新和自动刷新!
VBA代码方法
其实以上方法都算不上真正的“爬虫”技巧。如果想更灵活地获取数据,就需要使用VBA代码。
使用VBA获取网页数据,当然也可以结合以上三种方式使用,因为写代码意味着可以判断和循环,就像上面的股票收盘价信息一样,通过循环可以得到多个*敏*感*词*会更方便!
比如用VBA调用第二种方法,结合Excel的基本功能对数据进行排序和提取,就可以实现历史天气数据的获取!下面的方法使用VBA获取天气数据~
对于零售业来说,天气确实是一个非常重要的因素,会影响客流和季节性商品的销售。因此,有必要对历史天气数据进行分析!
如何批量获取天气数据?以下是获取北京2019年11月历史天气数据的结果:
这需要使用 VBA 代码。以上方法不适合大量获取数据。不会打码?没关系,我已经写好了,也有解释。复制后,稍加修改即可使用。(代码在文末)
如果你还想获取多个城市、多个年份、多个月份的数据,那么你需要考虑更多的情况。可以根据文末提供的代码修改实现。