采集现状评估与提升路径
当前数据采集管线的现状、已验证方案与待验证方向。
中国行政区划数据采集:现状评估与提升路径(2026 视角)
生成日期:2026-07-03 | 方法:多源 Web 检索 + 对抗式核验(25 条论断全部 3-0 确认,0 反驳)+ 结合本仓现有实现交叉验证 时效声明:所有活体接口测试(dmfw
getList、资源下载 API、xzqh 索引)均于 2026-07-03 完成;政府接口无 SLA、路径可能漂移(已实锤一例:/server/resource.html已 404 → 实际/resource.html)。
一句话结论
现行 dmfw JSON API + 公告 NLP 路线经外部验证是方向正确、且与社区标杆(xiangyuecn/AreaCity)收敛一致的。提升空间不在"换源",而在三处:
- 用新生效的法定发布机制(民政部令第79号)把"盲爬"升级为"节律驱动";
- 变更事件监控从 dmfw 全量差分扩展到 xzqh 权威事件流;
- 接受 level 5 村级在官方体系中的永久性缺失并显式冻结。
纠偏:研究过程曾假设本项目在做 HTML 爬取、建议"迁移到 JSON API"——此建议已不适用,
packages/crawler/src/dmfw.ts早已是纯getListJSON 调用。
主线一:数据源可得性
已验证可行
1. dmfw 官方 API 是法定唯一承载平台。
- NBS 自 2024 下半年停更统计用区划代码;民政部原栏目公告"自 2026 年起不再公布……请前往国家地名信息库"。dmfw 成为代码数据的唯一官方源。
- 来源:
https://www.mca.gov.cn/n156/n186/index.html、https://dmfw.mca.gov.cn/、https://github.com/xiangyuecn/AreaCity-JsSpider-StatsGov(3-0)
- 来源:
- 接口
/9095/xzqh/getList无鉴权、CORS 全开(Access-Control-Allow-Origin: *),2026-07-03 实测 HTTP 200。官方接口文档:https://dmfw.mca.gov.cn/interface.html(本仓dmfw.ts注释未记录此文档地址,建议补入)。
2. maxLevel 支持到 2 级深度,而现实现写死 maxLevel=1。
- 官方文档:
maxLevel最多 2 级(0=本级、1=本级+下级、2=本级+下+下下级)。 fetchChildren每次只取一层。改用maxLevel=2可把全国 BFS 的 HTTP 请求数大致减半。→ 见主线二"需进一步试验"。
3. 村级(level 5)在官方体系中已永久缺失,应显式冻结。
- 民政部令第79号:代码体系只到乡级(九位码:街道/镇/乡/民族乡/区公所),全文无村级。历史 12 位村级码是 NBS 统计用扩展(统计局令第14号);村/居委会法律上是"基层群众性自治组织",非行政区划建制。
- dmfw 实测(盐源县 513423)乡镇节点
children全空;高德 API 层级枚举也只到street。已验证的官方与主流商业渠道无一提供村级。- 来源:
https://www.gov.cn/gongbao/2025/issue_12226/202508/content_7036972.html、https://dmfw.mca.gov.cn/9095/xzqh/getList?code=513423、https://lbs.amap.com/api/webservice/guide/api/district(3-0)
- 来源:
需进一步试验(研究未能证实/证伪)
- 省级"每年 1 月和 7 月发布乡级代码"的落地形态:79 号令要求省级半年发布乡级代码,但发布在各省厅官网还是汇入 dmfw 未验证。若为前者,则乡镇级存在半年更权威校验点(比 dmfw 年更快),但需逐省确认。
- 邮编/区号权威源(研究问题 6 无通过验证的 claim):中国邮政/工信部是否有可替代 ip138 的官方邮编-区划映射,仍是空白。维持现状,标注为已知薄弱环节。
主线二:采集手段优化
已验证可行
1. 变更事件驱动 —— 引入 xzqh 权威事件流。
xzqh.mca.gov.cn/description?dcpid=<年份>发布《县级以上行政区划变更情况》,1999–2026 连续覆盖,stats.gov.cn 停更后仍在更新(2026 年含"设立岑岭县 2026-03-26""设立县级草湖市 2026-04-17")。- 正好喂给现有
@cndiv/extractorNLP 抽取流水线:xzqh 是权威事件源,比"从 dmfw 全量差分反推变更"更精准(差分会混入层级口径噪声,即 memorycrawler-dmfw-nbs-level-mismatch记录的 92 ops 伪变更问题)。 - 注意:页面是 GBK/GB18030 编码 HTML、无 RSS,需自建解析+轮询;2022 年无条目是"县级调整冻结期",重建变更链时按"无发布"而非"零变更"处理;平台仅回溯到 1999,无法覆盖 GB2260 1980–1998 区段。
- 来源:
http://xzqh.mca.gov.cn/description?dcpid=1(3-0)
- 来源:
2. 定时校准节律 —— 对齐 79 号令法定发布节点。
- 第十六条:国务院民政部门每年 1 月通过国家地名信息库发布截至上年末的全级次代码。实践已印证(2026-04 时 dmfw 数据现势至 2025-12-31)。
- 建议架构:日常 dmfw 增量 BFS(仅变更子树)+ xzqh 公告监控驱动差分;每年 1 月(法定节点)触发一次全国全量重爬做基线校准。
- 来源:
https://www.gov.cn/gongbao/2025/issue_12226/202508/content_7036972.html(3-0)
- 来源:
3. (撤销) 名称后缀是免费的变更信号。
- dmfw 返回内嵌已撤销单位,如
{"code":"513423290000","name":"双河乡(撤销)","level":4}(保留原码)。可作差分辅助信号识别 remove。 - 但它是非结构化的全角括号字符串后缀(非状态字段),抽样仅一县、全国一致性未验证。建议:diff 加"名称含
(撤销)→候选 remove"规则,但保持--removes=off默认(人工复核)。
需进一步试验
maxLevel=2减半请求实测:改一行searchParams即可 A/B。风险点是响应体积和潜在服务端深度限制,建议先在单省(宁夏640000000000)对比请求数与完整性。year参数能否直接取历史年版:若可,则历年快照能官方重建、无需自存差分链。但研究中"按年版查询历史"的 claim 被 3 票反驳(0-3),year很可能不支持回溯历史、只影响当前发布批次标记。建议实测证伪:getList?code=110000000000&year=2020看是否真返回 2020 态。
主线三:工程与合规
1. 商业地图源(高德)—— 只能内部交叉校验,绝不进再分发数据集。
- 高德条款三重禁止:禁止单独存储/向第三方提供地图数据(5.8)、禁止基于其数据构建数据集/衍生作品(深度数据条款 4.7)、禁止爬虫抓取分发(开放平台协议 3.5 / 4.12.7)。(3-0)
- 红线:高德/腾讯可作为"不落库、不进 patch"的在线一致性校验信号;不可把校验差异写进 MIT 分发的
source-*包。严格讲连持久化 diff 结果都是灰区。 - 天地图(国家测绘/自然资源部官方)已核验(2026-07-03,T4.1):许可与高德实质等同、并不更宽松——服务条款载明授权为「非独占、不可转让、不可再授权、可撤销、仅限普通使用」,禁止未经授权「修改、复制、分发、展示、反编译」,且不得将服务/数据买卖牟利、商业用途须经官方渠道+密钥(天地图山东服务条款 3.5.1 / 4.2.2 第 8 项)。行政区划 V2.0 API 层级反而更浅:
level仅国家级 5 / 省级 4 / 市级 3 / 区县级 2,最深到区县级、无乡镇无村,官方下载亦仅「省市县行政区划名称及编码对照表」三级。- 结论:天地图不构成对高德的合规优势,层级更浅(省市县三级本项目已有 dmfw 官方源覆盖),不纳入采集数据集;商业/官方地图源整体仅限内部一致性校验、不入 MIT 再分发库这一红线不变。
- 来源:
http://lbs.tianditu.gov.cn/server/administrative2.html(层级/字段)、https://www.sdmap.gov.cn/policy/服务条款.html(条款原文) - 来源:
https://wap.amap.com/doc/serviceitem.html、https://a.amap.com/lbs/static/protocol/Deep_Data_Service_Terms.html、https://lbs.amap.com/pages/terms/(3-0)
2. 社区标杆印证路线,但别照搬其分发口径。
- xiangyuecn/AreaCity 2026-04 版:国家地名信息库(乡镇级主源)+ 高德(省市区)+ 腾讯(辅助校验) 多源整合,同样止于四级无村级。印证 "dmfw + 交叉校验" 是社区共识。
- 但其公开分发含高德/腾讯衍生数据,有合规灰区。本项目 MIT 再分发必须更干净——只分发 dmfw(官方)+ NBS 历史(官方)血统的数据,商业源仅用于内部 CI 校验不入库。
- 来源:
https://github.com/xiangyuecn/AreaCity-JsSpider-StatsGov、https://www.cnblogs.com/xiangyuecn/p/19819355(3-0)
- 来源:
3. 反爬/稳定性 & 数据集托管。
- dmfw 接口实测无验证码/登录墙,仅一个非鉴权 WAF cookie。现有并发限流+断点续爬+重试(
gotretry:3)是合理实践。 - 政府接口无 SLA、路径会变(实锤:
/server/resource.html→/resource.html)。建议把接口路径+字段结构做成契约 smoke test,纳入 CI 定期跑,路径漂移即告警。 - 官方"资源下载"页只有 2020 年版省级示意界线(31 省 × 3 年版,2021-10 后停更),无批量代码下载——BFS 逐节点仍是唯一全量通道。
- 来源:
https://dmfw.mca.gov.cn/resource.html、https://dmfw.mca.gov.cn/serverResource/getServerResourceList(3-0)
- 来源:
落地优先级(80/20)
| 优先级 | 动作 | 成本 | 收益 |
|---|---|---|---|
| P0 | 接入 xzqh 变更事件流 → 喂给现有 extractor,替代/补充 dmfw 全量差分做增量触发 | 中(需 GBK 解析+轮询) | 高:精准增量,避开层级口径伪变更 |
| P0 | 实测 maxLevel=2,全国 BFS 请求量减半 | 极低(改一行+单省验证) | 中高:直接降采集成本 |
| P1 | "每年 1 月全量校准 + 日常增量"采集节律,对齐 79 号令 | 低(调度逻辑) | 高:对齐法定发布,资源可控 |
| P1 | 显式冻结 level 5 村级,文档标注无活源 | 极低 | 中:消除虚假更新承诺 |
| P2 | 实测 year 参数是否支持历史回溯(证伪优先) | 低 | 高(若成立):历年快照可官方重建 |
| P2 | dmfw 接口契约 smoke test 纳入 CI,防路径漂移 | 低 | 中:稳定性告警 |
| P3 | 核实天地图许可,评估作为官方系交叉校验源 | 中 | 中:合规的第三方校验 |
明确留白(研究未能证实,勿当已知)
- 村级替代渠道(省厅/公安部/腾讯乡镇以下)—— 只证明"已验证渠道均无村级",不能断言绝对不存在其他渠道。
- 邮编/区号官方权威源 —— 完全空白,ip138 暂无被证实的更优替代。
- 省级"半年发布乡级代码"的具体落地渠道 —— 未验证。
关键引用来源
| 主张 | 权威来源 |
|---|---|
| 民政部代码栏目 2026 停更转 dmfw | https://www.mca.gov.cn/n156/n186/index.html |
| 《行政区划代码管理办法》(民政部令第79号,2025-09-01 施行)年度发布机制 | https://www.gov.cn/gongbao/2025/issue_12226/202508/content_7036972.html |
| dmfw 官方接口文档 | https://dmfw.mca.gov.cn/interface.html |
| dmfw 行政区划接口(活体) | https://dmfw.mca.gov.cn/9095/xzqh/getList?code=513423 |
| dmfw 资源下载(仅示意界线,2021 停更) | https://dmfw.mca.gov.cn/resource.html |
| 县级以上变更情况(1999–2026 事件流) | http://xzqh.mca.gov.cn/description?dcpid=1 |
| 高德服务条款(三重禁止) | https://wap.amap.com/doc/serviceitem.html |
| 高德行政区划 API 层级(止于 street) | https://lbs.amap.com/api/webservice/guide/api/district |
| 社区标杆多源策略 | https://github.com/xiangyuecn/AreaCity-JsSpider-StatsGov |