# 行政区划码抓取脚本 **Repository Path**: cn-blogs/admin-area-code-spider ## Basic Information - **Project Name**: 行政区划码抓取脚本 - **Description**: 抓取国家统计局的行政区划代码和城乡区划代码 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 40 - **Forks**: 27 - **Created**: 2024-03-11 - **Last Updated**: 2025-08-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 国家行政区划码数据爬取 ## 如何运行 1. 下载 [Window版Python][python-windows] 的安装程序,并在本机安装 如果你打算在 Linux 下运行这个程序,你也可以直接下载 Linux 版本的 python,但我还没在 Linux 环境下验证过这个脚本 2. 打开命令行窗口,依次执行以下脚本,以安装本脚本的依赖库 ```shell pip install requests pip install lxml pip install pymysql ``` 3. 安装 MySql 服务器并创建好相应的表 你需要在本机上安装 MySql 数据库,并创建用于存储区划码数据的表。建表语句如下: ```sql CREATE TABLE `admin_area_2023` ( `code` char(12) NOT NULL COMMENT '区域编码', `name` varchar(60) NOT NULL COMMENT '区域名称', `level` tinyint(4) NOT NULL COMMENT '区域等级:\r\n1 : 省/直辖市\r\n2 : 市\r\n3 : 区/县\r\n4 : 乡镇/街道\r\n5 : 社区/村委会', `parent_code` char(12) DEFAULT NULL COMMENT '父级区域编码', PRIMARY KEY (`code`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; ``` 4. 根据实际情况修改脚本 一般来说,你需要修改以下几项参数 - 要抓取哪一年的数据。搜索 `HOME_URL =` 即可找到代码所在行 - 连接 MySql 的用户名、密码、端口、数据库名称。搜索 `pymysql.connect` 即可找到代码所在行 - 修改SQL语句,设置要插入的表名。搜索 `insert into` 即可找到代码所在行 - 设置要抓取的数据等级,默认为4级。搜索 `MAX_GRAB_LEVEL` 即可找到代码所在行 还支持一些其它的冷门设置,就请自行阅读源码吧。 5. 运行脚本 假设本机的 [python][python-official] 脚本命名为 admin-area-data-spider.py, 且位于 D 盘根目录,则执行以下命令运行程序: ```shell python d:\admin-area-data-spider.py ``` ## 工程结构 ```text ┌─ assets # 存放行政区划码成品文件 │ ├─ database # 数据库建表语句 │ ├─ admin-area-data-spider.py # 区划码抓取主程序 │ └─ readme.md # 即本文件 ``` ## 行政区划码的特点 - 编码是长度固定为12位的纯数字 比如北京的编码 `110000000000`, 长度为12位,并且全部为数字,同时第1位数字不为0,也就是说,在数据库存储区位码时,可以直接使用 number 类型,而不必是 varchar。 - 区划码共5个等级,见下表: | 等级 | 行政级别 | 示例 | | ---- | ----------- | ------------------------------------------------------------ | | 1 | 省/直辖市 | · 四川省
· 北京市 | | 2 | 市 | · 四川省/成都市
· 北京市/市辖区 | | 3 | 区/县 | · 四川省/成都市/武候区
· 陕西省/咸阳市/泾阳县 | | 4 | 街道/乡镇 | · 四川省/成都市/武候区/石羊街道
· 陕西省/咸阳市/泾阳县/永乐镇 | | 5 | 社区/村委会 | · 四川省/成都市/武候区/石羊街道/府城社区居委会
· 陕西省/咸阳市/泾阳县/永乐镇/磨子桥村委会 | - 各等级所占数字位数及开始位置如下 ```text 四川省/成都市/武候区/石羊街道/府城社区居委会 +----+----+----+-----+-----+ | 51 | 01 | 07 | 063 | 009 | +----+----+----+-----+-----+ ``` [python-official]: https://www.python.org/ [python-windows]: https://www.python.org/downloads/windows/