用power bi桌面制作数据图时,由于BING图的中国数据不是很准确,如果只用汉字地名绘图,经常会出现明明是国内地址却去国外的不可思议的事情。 所以最准确的方法是通过纬度和经度来确定位置。
现在的互联网上什么数据都有。 搜索一下,有很多提供经纬度查询的网站。 在我们这样的作图中纬度经度的精度不高。 寻找了可以查询全国各省市县区级经纬度的网站:
找到上海市,随便找个区查一下。 还是可以的
检查网页的连接目标,应该可以通过简单的结构直接抓住:
这种结构的网页通常是通过子网页的连接来检索内容,而不是现成的数据表,一页对我们有用的数据只有地名、经度、纬度三个。 所以,必须用文字打开。 然后,筛选出我们需要的内容,整理一下就行了。
但是,不能一个一个手工添加这么多子页面。 即使从任一页面进入,也有与其他区域的连接。 通过此连接自动添加。
第一部分 获取全部的链接地址
首先修改这个源的设定,一定要设定GB2312代码,否则的汉字就是乱码。
预约行,从109行开始,一共19行
以下是提取内容。 各区的名称和连接地点:
提取这个分隔符之间的文本非常有用。 高级设置将跳过一个字符。 因为“li”中的“”是第一个开始符号,所需的内容在第二个开始符号之后,所以跳过第一个开始符号。
获取连接目标的方法也相同,但无需跳过即可直接获取。
第二部分 抓取
自定义列:也可以在Web.Contents上基于链接地址进行查询。
查询的结果是二进制文件,单击合并时会发出警告。 单击“编辑”
点击编辑后显示对话框。 在此也选择文本文件:
>接下来就是合并文件的操作了,还是要注意选择GB2312编码:
Power Query会向我我们合并文件那样,自动生成一个自定义函数,并且引用这个自定义函数,把所有的页面合并起来,为了后续操作的简便,我们在右侧的步骤里后退一步,找到删除其他列,这里找回被自动删除的各区的名字,如果不找回来,后面要自己再提取一遍。
最后的结果是这样子的:第二部分的工作就完成了。
第三部分 整理数据
这么多的行里面,对我们有用的只有19行
我们要筛选出来这19行:通过观察,只要同时包含这个两个关键字的行就是我们需要的内容,世界一下子就变得清爽了。
又要用到提取>分隔符之间的文本,这回不用转换里的,用添加列里面的提取,省的复制列了。先提取的是经度:
然后是提取纬度:
最后修改一下列名,以及数据类型,就大功告成了:
我们模拟了一列各区的销售数据,然后用各区的名字为索引列建立表的关系:
就可以到BI中做图了:
最好是把这个网络抓取的数据,保存到本地,作为一个存档,没有必要每次都去网络上刷新,直接在Power BI Desktop中的表格模式下,复制表格,然后粘贴到Excel中就可以了。
如果你是在Excel中的Power Query抓取的数据,你就更简单了,只要加载到表,然后复制就好了。