小勤:大海,我们经常要查看国际燃油价格指数的情况,然后跟公司采购油价的情况做对比,有什么好办法吗?


大海:你都是到哪里查看国际燃油价格的?

小勤:这个网站啊,你看,这个图里就有最近一年的油价指数。

爬取国际燃油价格指数_数据

大海:那你可以试试用爬虫直接把数据爬下来啊。爬下来后还能直接跟公司数据做对比。

小勤:你说爬虫?我听说过,好像这几年很热门的,但那不是要用python吗?

大海:复杂的要用python,有些简单的不需要,用Power BI就可以了,或者用Excel都可以,因为Excel-2016版里面的【数据】-【获取和转换】功能其实就是Power BI里的【开始】-【外部数据】功能。

爬取国际燃油价格指数_数据_02


小勤:真的?那太好了。赶紧教我啊。

大海:好。我刚才对那个网站分析了一下,bw380过去12个月里每天的油价其实在这个链接里面:http://www.bunkerworld.com/prices/index.graph/bw380/monthyear/12/0,就是那个图背后的数据都在这里。其他类型的油价你把链接里“bw380”那部分替换掉就行了。

爬取国际燃油价格指数_json_03


小强:啊?完全不懂,一万个懵逼啊!

大海:这个你不懂其实没有关系,你找公司的IT帮你分析出来就行。或者也可以找我,不是吗?

小强:对,对。那接下来怎么办?

大海:接下来我们就可以用PowerBI或者Excel爬取数据了。我用Power BI给你演示吧,在Excel里的操作是一样的。

第一步:连接web数据源

1.1 【获取数据】-【web】

爬取国际燃油价格指数_数据_04


1.2 在弹出的窗口里填上链接,【确定】

爬取国际燃油价格指数_json_05


1.3 在弹出的窗口中选中Document,点击【编辑】进入“查询编辑器”界面

爬取国际燃油价格指数_数据_06


 第二步:逐步查询编辑数据

 2.1 展开数据:这种数据一般在table里,见到table就往下点。

爬取国际燃油价格指数_数据_07


2.2 如果有head和body两种,那么数据一般在body的table里。

爬取国际燃油价格指数_json_08


2.3 继续点击table展开,最后到出现text,这里面就是数据了。

爬取国际燃油价格指数_数据_09


       第三步:转换和提取数据

      3.1 像这种用大括号“{”包住的数据,一般就是JSON格式。可以通过Power BI的JSON解析器进行分析。选中数据内容所在的地方,【转换】-【分析】-【JSON】。

爬取国际燃油价格指数_数据_10


3.2 这些看起来很乱的内容被转换成一个记录(record):

爬取国际燃油价格指数_数据_11


3.3 点击Record进去,文本的内容就解析成一个分类清单,其中的数据就在dataProvider的list里面(如果你不知道数据在哪里的话,可以依次点开看看):

爬取国际燃油价格指数_json_12


3.4 点击List,展开所有记录:

爬取国际燃油价格指数_python_13


3.5 转换成表

爬取国际燃油价格指数_数据_14


3.6 展开表格数据

爬取国际燃油价格指数_json_15


3.7 数据成果

爬取国际燃油价格指数_python_16


大海:好了,数据都有了。

小勤:好神奇啊。但看起来好像步骤好多啊。

大海:是的,但是实际上熟悉的话很快的,就是点、点、点。多练一下就能掌握了。而且,一旦做好这个,以后就刷新一下数据就行了,一劳永逸啊。

小勤:嗯。这倒是。磨刀不误砍柴功。而且跟其他数据的结合分析也不用再重复做了。



爬取国际燃油价格指数_json_17