中国行政区域划分,既行政区划,大体上分省、市、区县、乡镇街道四级,行政区划的勘界、调整、命名等,由国家各级民政部门负责。
每个月,国家民政部会在官网上公示全部县以上行政区划编码和县以下行政区划变更情况。
每年年初,国家统计局会更新一版统计用区划代码,用于统计调查和专项调查,这套数据的底版使用民政数据,一般是去年九十月份的数据。
这是目前最常用的两套行政区划数据,两者都是完全公开的。
一、数据获取
民政部行政区划代码公示网址:www.mca.gov.cn/article/sj/xzqh/2020/
因为是公开数据,我们用3行Python3代码就能获取网页数据,运行脚本,将响应打印到控制台上,可以看出来源数据是表格形式的。
import requests
data=requests.get('http://www.mca.gov.cn/article/sj/xzqh/2020/2020/202003301019.html')
print(data.text)
只要能解析这个响应,就可以把数据获取下来,用BeautifulSoup解析就行,非常简短的一个脚本:
import requests
from bs4 import BeautifulSoup
data=requests.get('http://www.mca.gov.cn/article/sj/xzqh/2020/2020/202003301019.html')
soup=BeautifulSoup(data.text)
table=soup.find('table')
trlist=table.findAll(name='td',attrs={'class':'xl7030721'})
num=len(trlist)
xzqhlist=[]
for i in range(0,int(num/2)):
code=trlist[i*2].get_text().replace('\xa0','')
name=trlist[i*2+1].get_text().replace('\xa0','')
xzqhlist.append(code+':'+name)
print(xzqhlist)
民政局的数据很少,且都公示在一个网页上,从页面复制一下,放到Excel里都行。
统计局行政区划代码公示网址:www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/
统计局数据是树状结构,要一个一个点,是比较麻烦,的确需要爬一下。
先分析一下各级目录结构。
省级目录:
http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2019/index.html
只有一个index.html页面。
市级目录:
http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2019/11.html
11.html是省级编码的前两位。
区级目录:
http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2019/11/1101.html
11/1101.html的格式是省级编码前两位/区县编码的前四位。
四级目录:
http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2019/11/01/110101.html
11/01/110101.html的格式是省级编码的前两位/区县编码的3、4位/区县编码的前六位。
五级目录:
http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2019/11/01/01/110101001.html
11/01/01/110101001.html的格式是省级编码的前两位/区县编码的3、4位/区县编码的5、6位/乡镇街道编码的前九位。
如果不知道行政区划编码是什么,看后文就行。
统计局行政区划编码的网页是个树状结构,点击按钮进入下