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