基于中华人民共和国民政部国家地名信息库行政区划代码发布页,抓取并整理全国行政区划代码数据,生成可直接使用的 CSV、Excel、MySQL SQL、PostgreSQL SQL 数据集。
- 页面地址:https://dmfw.mca.gov.cn/XzqhVersionPublish.html
- 数据版本:
Xzqh20251231 - 官方说明截止日期:
2025-12-31 - 本仓库当前生成时间:
2026-03-26T08:36:23+00:00
.
├── generate_xzqh_datasets.py # 一键抓取并导出数据集
├── xzqh_dataset/
│ ├── dataset.py # 数据模型、扁平化与 SQL 渲染
│ └── generator.py # 抓取、重试、导出逻辑
├── tests/
│ └── test_dataset.py # 单元测试
└── output/
├── csv/division_codes.csv
├── excel/division_codes.xlsx
├── sql/division_codes_mysql.sql
├── sql/division_codes_pgsql.sql
└── meta/summary.json
根据 output/meta/summary.json:
- 省级:
33 - 地级:
334 - 县级:
2845 - 乡级:
39066 - 总记录数:
42278
说明:当前官方页面中台湾地区无可发布明细,因此实际导出为 33 个已发布省级节点。
- Python
3.12+ - 依赖:
requestsopenpyxlpytest(用于测试)
安装示例:
python3 -m pip install requests openpyxl pytestpython3 generate_xzqh_datasets.py --output-dir output --workers 1参数说明:
--output-dir:输出目录,默认output--version-tag:版本标识,默认Xzqh20251231--version-date:版本日期,默认2025-12-31--workers:并发参数,默认1
默认使用
workers=1,是为了降低官方接口限流与偶发500的风险。
- 文件:
output/csv/division_codes.csv - 编码:
UTF-8 with BOM - 适合 Excel 直接打开或导入其他系统
- 文件:
output/excel/division_codes.xlsx - 工作表:
admin_division_codes:明细数据meta:元信息与统计摘要
- 文件:
output/sql/division_codes_mysql.sql - 包含建表语句与批量插入语句
- 文件:
output/sql/division_codes_pgsql.sql - 包含建表语句与批量插入语句
- 文件:
output/meta/summary.json
主数据字段如下:
version_tag:版本标识version_date:版本日期name:行政区划名称code_9:9 位代码code_6:6 位展示代码level:层级(1 省、2 地、3 县、4 乡)parent_code_12:12 位父级代码parent_code_6:6 位父级代码parent_name:父级名称name_path:完整路径type_text:行政区划类型source_url:来源页面captured_at:抓取时间
运行测试:
python3 -m pytest -q tests/test_dataset.py当前验证结果:
- 测试通过:
11 passed - CSV 行数:
42278 - Excel 行数:
42278 - 重复主键:
0 - 必填字段空值:
0
- 导出文件名 已去掉
admin_前缀。 - SQL 内部表名 仍为
admin_division_codes,便于和脚本内部结构保持一致。 - 抓取逻辑已内置:
- 接口限流重试
HTTP 500重试- 去重合并
如果你要扩展历史版本,只需要在现有脚本基础上增加版本列表抓取与多版本循环即可。