小勤:大海,我们经常要查看国际燃油价格指数的情况,然后跟公司采购油价的情况做对比,有什么好办法吗?
大海:你都是到哪里查看国际燃油价格的?
小勤:这个网站啊,你看,这个图里就有最近一年的油价指数。
大海:那你可以试试用爬虫直接把数据爬下来啊。爬下来后还能直接跟公司数据做对比。
小勤:你说爬虫?我听说过,好像这几年很热门的,但那不是要用python吗?
大海:复杂的要用python,有些简单的不需要,用Power BI就可以了,或者用Excel都可以,因为Excel-2016版里面的【数据】-【获取和转换】功能其实就是Power BI里的【开始】-【外部数据】功能。
小勤:真的?那太好了。赶紧教我啊。
大海:好。我刚才对那个网站分析了一下,bw380过去12个月里每天的油价其实在这个链接里面:http://www.bunkerworld.com/prices/index.graph/bw380/monthyear/12/0,就是那个图背后的数据都在这里。其他类型的油价你把链接里“bw380”那部分替换掉就行了。
小强:啊?完全不懂,一万个懵逼啊!
大海:这个你不懂其实没有关系,你找公司的IT帮你分析出来就行,或者也可以去了解一些基础的网页分析方法。
小强:对,对。那接下来怎么办?
大海:接下来我们就可以用PowerBI或者Excel(Power Query)爬取数据了。操作是一样的。
第一步:连接web数据源
1.1 【获取数据】-【web】
1.2 在弹出的窗口里填上链接,【确定】
1.3 在弹出的窗口中选中Document,点击【编辑】进入“查询编辑器”界面
第二步:逐步查询编辑数据
2.1 展开数据:这种数据一般在table里,见到table就往下点。
2.2 如果有head和body两种,那么数据一般在body的table里。
2.3 继续点击table展开,最后到出现text,这里面就是数据了。
第三步:转换和提取数据
3.1 像这种用大括号“{”包住的数据,一般就是JSON格式。可以通过Power BI的JSON解析器进行分析。选中数据内容所在的地方,【转换】-【分析】-【JSON】。
3.2 这些看起来很乱的内容被转换成一个记录(record):
3.3 点击Record进去,文本的内容就解析成一个分类清单,其中的数据就在dataProvider的list里面(如果你不知道数据在哪里的话,可以依次点开看看):
3.4 点击List,展开所有记录:
3.5 转换成表
3.6 展开表格数据
3.7 数据成果
大海:好了,数据都有了。
小勤:好神奇啊。但看起来好像步骤好多啊。
大海:是的,但是实际上熟悉的话很快的,就是点、点、点。多练一下就能掌握了。而且,一旦做好这个,以后就刷新一下数据就行了,一劳永逸啊。
小勤:嗯。这倒是。磨刀不误砍柴功。而且跟其他数据的结合分析也不用再重复做了。