从民政部网站爬取最新的行政区划代码表

从民政部网站爬取最新的行政区划代码表

首先非常抱歉最近两天没能给大家带来新的内容,一则是因为最新搬家收拾房间花了很长时间,二则是因为最近工作上的事情也比较急迫,懒惰之处敬请谅解。

今天由于时间的关系,内容较短,是一个小伙伴问到的,恰好最近我的工作中也用到了,所以就把解决方案分享给大家。

视频讲解

这个小伙伴想爬取:http://www.mca.gov.cn/article/sj/xzqh/2020/2020/202003301019.html 上的 2020年2月中华人民共和国县以上行政区划代码,这是一个 HTML 表格静态的。所以可以使用 rvest 爬取,代码很简单。

首先我们导入 rvest 等包:

代码去哪了?

代码可以加入我的知识星球后从知识星球下载附件获取~
要了解如何加入我的知识星球,可以阅读关于界面或者添加我的微信咨询。

第一步,把这个网页读取解析并保存为 html 对象:

代码去哪了?

代码可以加入我的知识星球后从知识星球下载附件获取~
要了解如何加入我的知识星球,可以阅读关于界面或者添加我的微信咨询。

由于这个网页只有一个表格,所以我们可以直接使用 html_table() 函数提取表格:

代码去哪了?

代码可以加入我的知识星球后从知识星球下载附件获取~
要了解如何加入我的知识星球,可以阅读关于界面或者添加我的微信咨询。

如果我们运行 ?html_table() 查看 html_table() 的帮助文档,我们可以看到这个函数的功能是 “Parse an html table into a data frame.”,但是我们可以注意到我们得到的 table 是个 Large list(611.2kb),这是因为经常一个网页存储多个表格,html_table() 会自动提取这些表格并使用一个 list 对象存储他们,而我们这里的网页只有一个表格,所以这个 list 可以直接转换成 data.frame:

代码去哪了?

代码可以加入我的知识星球后从知识星球下载附件获取~
要了解如何加入我的知识星球,可以阅读关于界面或者添加我的微信咨询。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#> # A tibble: 3,213 x 2
#> 行政区划代码 单位名称
#> <chr> <chr>
#> 1 110000 北京市
#> 2 110101 东城区
#> 3 110102 西城区
#> 4 110105 朝阳区
#> 5 110106 丰台区
#> 6 110107 石景山区
#> 7 110108 海淀区
#> 8 110109 门头沟区
#> 9 110111 房山区
#> 10 110112 通州区
#> # … with 3,203 more rows

这样我们就得到了这个行政区划代码表了!下面我们再分离省市县。

首先是市,市的最后两位行政区划代码是 00:

代码去哪了?

代码可以加入我的知识星球后从知识星球下载附件获取~
要了解如何加入我的知识星球,可以阅读关于界面或者添加我的微信咨询。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#> # A tibble: 367 x 2
#> 行政区划代码 单位名称
#> <chr> <chr>
#> 1 110000 北京市
#> 2 120000 天津市
#> 3 130000 河北省
#> 4 130100 石家庄市
#> 5 130200 唐山市
#> 6 130300 秦皇岛市
#> 7 130400 邯郸市
#> 8 130500 邢台市
#> 9 130600 保定市
#> 10 130700 张家口市
#> # … with 357 more rows

省的后四位行政区划代码都是 0:

代码去哪了?

代码可以加入我的知识星球后从知识星球下载附件获取~
要了解如何加入我的知识星球,可以阅读关于界面或者添加我的微信咨询。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#> # A tibble: 34 x 2
#> 行政区划代码 单位名称
#> <chr> <chr>
#> 1 110000 北京市
#> 2 120000 天津市
#> 3 130000 河北省
#> 4 140000 山西省
#> 5 150000 内蒙古自治区
#> 6 210000 辽宁省
#> 7 220000 吉林省
#> 8 230000 黑龙江省
#> 9 310000 上海市
#> 10 320000 江苏省
#> # … with 24 more rows

其余的就都是区县了:

代码去哪了?

代码可以加入我的知识星球后从知识星球下载附件获取~
要了解如何加入我的知识星球,可以阅读关于界面或者添加我的微信咨询。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#> # A tibble: 2,846 x 2
#> 行政区划代码 单位名称
#> <chr> <chr>
#> 1 110101 东城区
#> 2 110102 西城区
#> 3 110105 朝阳区
#> 4 110106 丰台区
#> 5 110107 石景山区
#> 6 110108 海淀区
#> 7 110109 门头沟区
#> 8 110111 房山区
#> 9 110112 通州区
#> 10 110113 顺义区
#> # … with 2,836 more rows

好了,大家如果有不理解的可以在群里提问!

知识星球附件链接:https://t.zsxq.com/Nrjamqr

#

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×