# 行政区划码抓取脚本
**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/