PQ网抓基础:接入省市区代码之2-获取市级编码及名称
接着上次《PQ网抓基础:接入省市区代码之1-获取省级编码及名称》的内容。
前面已经通过直接从源代码里分离信息的方式得到了各个省级编码,如下图所示(删除不必要的列并修改列名):
Step 01 因为后续有重复调用主页链接,所以将主页链接做成一个参数,即将原来在Web.Contents函数里直接用的链接单独出来做成方便调用的参数(如这里起名为home):
Step 02 另外,因为我们后面抓取下一层级内容时,需要在网址后面加入下一层的编码,因此,我们只保留省级编码:
Step 03 这样,我们就可以继续生成下一级链接,并用函数进行数据的抓取了。因为市级里都是直接的编码加名称的表(table),如下图所示:
所以,可以直接用Web.Page+Web.Contents函数来读取表信息,而不需要读取源代码来进行数据的提取,公式如下:
Step 04 这时,为简单处理,我们可以直接对识别出来的表进行展开:
Step 05 然后,我们继续观察一下数据,发现需要的数据都在标志为citytable的行里:
所以,我们把这些表给筛选出来:
Step 06 另外,其实这些数据表还有一个问题:部分数据表没有将“统计用区划代码”和“名称”作为标题行,比如北京的:
而有的确是直接用来做好了标题,如河北的:
所以,我们为了后面可以统一直接展开数据,对识别出来的Table进行简单的处理,即如果行标题包含“Column1”这样的,我们就先提升标题行,使得“统计用区划代码”和“名称”成为标题行(不要问我是怎么记住这几个函数的,关键是思路,是思路,是思路
——其实这些不是很常用的函数我也没有记住,只是我知道大概有这些,然后需要的时候查了一下文档而已……):
=if Table.HasColumns([市级.Data],{"Column1"})
then Table.PromoteHeaders([市级.Data])
else [市级.Data]
Step 07 经过这样的处理后,我们就可以直接展开表的数据了,如下图所示:
Step 08 展开后,删掉不必要的列,并修改相应名称即可,如下图所示:
再往下一级的数据抓取和市级的数据抓取就基本一样了,即从市级代码里提出相应的编码组成链接,然后用Web.Page+Web.Contents函数进行解析,然后展开表即可。而且由于数据比较规范,没有市级里面的行标题问题,相对来说还更加简单一些,大家动手操作一下即可,不再赘述。