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