Skip to content

Latest commit

 

History

1 Commit

Folders and files

Repository files navigation

division_codes

基于中华人民共和国民政部国家地名信息库行政区划代码发布页,抓取并整理全国行政区划代码数据,生成可直接使用的 CSV、Excel、MySQL SQL、PostgreSQL SQL 数据集。

数据来源

仓库内容

.
├── 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+
  • 依赖:
    • requests
    • openpyxl
    • pytest(用于测试)

安装示例:

python3 -m pip install requests openpyxl pytest

重新生成数据

python3 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 的风险。

输出文件说明

1. CSV

  • 文件:output/csv/division_codes.csv
  • 编码:UTF-8 with BOM
  • 适合 Excel 直接打开或导入其他系统

2. Excel

  • 文件:output/excel/division_codes.xlsx
  • 工作表:
    • admin_division_codes:明细数据
    • meta:元信息与统计摘要

3. MySQL SQL

  • 文件:output/sql/division_codes_mysql.sql
  • 包含建表语句与批量插入语句

4. PostgreSQL SQL

  • 文件:output/sql/division_codes_pgsql.sql
  • 包含建表语句与批量插入语句

5. 元数据摘要

  • 文件: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 重试
    • 去重合并

如果你要扩展历史版本,只需要在现有脚本基础上增加版本列表抓取与多版本循环即可。

About

行政区划代码

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages