Power BI 可视化 | 定点网抓操作示例

数据分析中不可避免的是分析中国传统节日例如春节等节日对于国内商业产能的影响,而使用Dax语言编写农历日期表又十分困难,于是选择使用M函数以及定位获取数据来解决农历日期表的问题。

Power BI Desktop在网抓方面加入了“使用示例提取表”的功能,类似于智能填充以及添加示例中的列,允许用户手动输入目标数据,并根据输入内容智能分析转换规则,获取到网页中具有同样样式的其他数据。

该功能依据的是Web.BrowserContents以及Html.Table这两个函数。

前者用于获取网页的Html源码,初步探究其作用相当于Text.FromBinary和Web.Contents的组合;后者能够返回包含指定CSS Selector所有内容的表,是实现CSS Selector网抓的核心函数。

说回农历日期表,我们在获取农历日期之前,需要先用M函数建立一个日期表。

之前我们曾经说过如何使用M函数建立日期表(指路:用M语言创建日期表),这里就不多赘述了。

建立好日期表后,我们打开浏览器,搜索一个带有农历日期的日历网页。
例如:https://m.laohuangli.net

在开头我们讲了“使用示例提取表”的功能基于CSS Selector的技术支持,所以我们需要右键页面,检查网页数据的源代码 。

源代码中包含了网页页面的所有信息,但并不是所有信息都是可以被网抓获取的,所以我们需要在源代码中找到我们所需的农历日期信息。右键,点击复制。

查看是否有复制Selector的选项。
有的话说明我们可以通过Power BI获取该数据。
然后我们复制网页链接,回到Power BI,选择从Web获取数据,将链接粘贴

点击确定,选择左下角“使用示例添加表”[婷5] ,此时我们在列1双击,即可输入选择我们所需的信息关键词。

至此我们获取到了当前页面的农历日期。
下一步,我们返回到网页,随机选择一天,观察网址的结构。

我们可以清楚地看出网址是分成几个部分的,其中有与网页选择对应的年份和日期。

这时候如果我们在数据源设置网址分段编辑的话,只能直接输入数字,那么得到的只有某一年或者某一天的农历日期。

因此我们需要将年和年月日代入参数,在查找时进行辅助:

由于任意值默认是数字类型,无法识别具体年份,如果设置任意值,我们需要在后续使用“Text.From”给“年份”和“年月日”字段转换类型,为了节省这一步骤,我们直接将类型设置成文本。

设置好参数后,我们在右侧应用步骤中右键源,进行编辑设置,对URL分段编辑。

确认没有错漏,在刚刚获取的单页农历表中,创建函数。

我把这个函数取名为“获取农历”

接下来我们需要根据日期ID创建一个我们需要的示例列,我们选中日期ID列,点击左上角“示例中的列”,选择“从所选内容”,然后将列名修改为“年月日”[婷9] 。
注意,在“年月日”这一列中输入日期的时候,格式要与参数“年月日”的格式相同,后续我们使用自定义函数获取信息的时候才能准确进行一一对应。

最后,我们选择调用自定义函数,来将所需日期与网页中的农历日期信息进行对应获取。

加载结束后,我们就得到了一个包含农历日期的日期表啦~

获取农历日期只是应用方案之一,我们可以以此为例在网页上定位获取更多我们需要的信息,例如我们分析商场盈利时要考虑传统节日,我们就可以获取节日日期等信息;或者在购物网页获取商品价格信息等等,甚至可以获取不同网页中同一位置的值或者同一网页中不同位置的同属性值。

更多应用方法期待大家一起来探索~

本期内容就是这些,小伙伴们下期再见!



如果您想深入学习微软Power BI,欢迎登录网易云课堂试听学习我们的“从Excel到Power BI数据分析可视化”系列课程。或者关注我们的公众号(PowerPivot工坊)后猛戳”在线学习”。



长按下方二维码关注“Power Pivot工坊”获取更多微软Power BI、PowerPivot相关文章、资讯,欢迎小伙伴儿们转发分享~


Power Pivot工坊