平时我们使用Excel,经常是处理本地的数据,你懂得Excel的排序,筛选,条件格式,透视表,图表等…… 但你可能不懂Excel怎么获取网页上的数据!
网络爬虫?!你可能以为一定要写代码才能实现,其实除了代码外,Excel还配有一些现成的功能,方便你不用代码也能获取到网页的数据!
以下的方法中,前面三种都不用写代码,最后一种需要用到代码,但我也已经写好了,拿来就能用,让你也学会轻松用Excel获取网页数据的一些初步的爬虫方法!
自Excel2013版本开始,就推出了一些Web函数,以下的2个函数配合使用,就可以帮助我们获取网页的数据到Excel。
FILTERXML(xml, xpath) , 从XML数据中返回指定的数据,网页上的数据很多都是以XML的形式存在,这个函数就是用于提取XML中的指定信息。
WEBSERVICE(url) , 返回网页中的数据,你可以理解为该函数可获得一堆的XML字符串数据。
例如下面的这个公式,就是使用有道翻译的网站,可以获取翻译结果:
=FILTERXML(WEBSERVICE("http://fanyi.youdao.com/translate?&i="&B2&"&doctype=xml&version"),"//translation")
如果你复制以上公式到Excel后,你只需要在B2单元格输入你要翻译的内容,公式就会返回翻译的结果给你!
是不是觉得超级方便!对于轻量级连接外部数据,这个函数方法还是挺方便的。
除了可以翻译之外,用这个函数还可以辅助你炒股!正在上班,不方便使用手机或看财经网页,但又想关注股票的实时价格,怎么破?
复制以下公式到B1单元格,然后在A1单元格中输入你关注的股票代码,在B1就能显示实时的股价了,想刷新时按一下F9就行了~
=VALUE(TRIm(MId(SUBSTITUTE(WEBSERVICE("http://quote.stock.hexun.com/stockdata/stock_quote.aspx?stocklist="&A1&"&time=" & TEXT(NOW(), "hhmmss")),",",REPT(" ",99)),2*99,111)))
当你在专注地看着Excel工(chao)作(gu)的时候,即例老板忽然在身边经过,你也能淡定地应对了!这个技能,千万不要让你的老板知道了!
但使用这个公式也需要注意,首先必须保证你的电脑能正常联网,另外如果有道翻译调整了网页代码,或者网址的入口改变了,那么上面的这个公式也会失效,需要重新去研究逻辑再写公式~
在Excel2016以前,一直有一个获取网页数据的功能,在Excel2016推出PQ后就隐藏起来了,但是仍然可以通过手工调出来!
手工调出来的方法可以从「选项」中的「数据」里去设置它的显示,也可以直接通过按快捷键Alt+D+D+W(注意:不需要同时按,只需按顺序按下去即可!),然后就会弹出以下的界面:
然后我们只需要输入网页地址,图中演示的是 http://quotes.money.163.com/trade/lsjysj_600519.html#06f01 这个地址。
这个功能就能够帮我们识别网页中的表格,然后我们只需要选中表格(点黄色箭头去选),点右下角的导入,然后就可以把数据导入到Excel中!
而且你还可以刷新这个表格,同时支持手动刷新和自动刷新,非常的方便~
这个方法要注意的问题是,并不是所有的网页都可以获取到数据,因为你不一定能拿到真实的网页地址,所以你要尽量找到最深入的那个地址。你有办法爬,别人也有办法反爬,所以持续地获取网页的数据,就需要密切关注网页是否有变化~
自从Excel 2016开始,PQ就集成在Excel中,并且计划用它来替换旧版的数据查询获取功能,所以用PQ也可以帮我们获取网页的数据!
因为动图太大,无法上传,所以我就用截图去说明步骤:
1、点击上面的“自网站”,输入网址,按下“确定”
2、在出现的导航器中,点击Table开头的图标,右侧就会有这些表格的预览,选择你要导入的表格,按右下角的“加载”
3、然后就能获取表格数据到Excel了,也是支持手动刷新和自动刷新的!
其实以上的方法还算不上真正的“爬虫”技能,若要更灵活地获取数据,就需要用到VBA代码了。
使用VBA获取网页数据,当然也是可以和上面的三种方法去结合使用,因为写代码意味着你可以判断,可以循环,就像上面的股票收盘价信息,你可以通过循环获取多个股票的数据了,会更方便喔!
例如通过用VBA调用第二种方法,结合Excel的基础功能对数据进行整理、提取,就可以实现历史天气数据的获取了!以下用VBA的方法来获取天气数据~
对于零售行业来说,天气确实是很重要的因素,会影响客流,会影响应季货品的销售,所以结合历史天气数据进行分析是很有必要的!
那怎么批量地获取天气数据呢?以下就是获取2019年11月北京历史天气数据的结果:
这就需要用到VBA代码了,以上的办法都不适合大批量地获取数据,不会代码?没关系,我已经写好了,而且也有解释,大家复制后只要稍作修改即可使用。(代码在文末)
如果你还想多城市、多年份、多月份地获取数据,那你就还需要考虑更多的情况了,大家可以基于文末提供的代码进行修改实现。
当然,你也可以购买我们现成的模板,直接就能使用~(后台回复 “ 天气 ” 查看详情,或点击文末的阅读原文)