国家统计年鉴分地区表格采集与校验流程
适用场景
需要《中国统计年鉴》(或同类在线年鉴)中"分地区"表格的结构化数据(31省×多年),并要求可溯源、可校验。
关键事实(已验证,2026-10)
- 年鉴在线库:
https://www.stats.gov.cn/sj/ndsj/{年份}/indexch.htm(如 2023/2024/2025 均可访问)。目录在left.htm(GB2312编码,用 Pythongb18030解码解析,Git Bash 的 iconv/grep 对多字节不可靠)。 - 表格是 JPG 图片:
https://www.stats.gov.cn/sj/ndsj/{年份}/html/C{章号}-{表号}.jpg(如 C06-22.jpg)。下载后用 Read 工具视觉转录,图片清晰度足够,但必须校验。 - 新版年鉴次年秋季出版(2025版=2025-09出版,载2024数据);采集前先 HEAD 探测最新版是否上线(404=未出版),避免把"近三年"搞错。
- data.stats.gov.cn 接口对 curl 返回 403(需浏览器会话),不要死磕 API。
执行步骤
- 探测最新年鉴版本:
curl -s -o /dev/null -w "%{http_code}" https://www.stats.gov.cn/sj/ndsj/{YYYY}/indexch.htm - 下载 left.htm,用 Python 正则
href='(html/C\d+-\d+\.jpg)'>([^<]+)提取目标表号(同一指标在不同年份版中表号通常稳定,但逐年确认)。 - 并行 curl 下载 JPG → Read 逐张转录目标列。
- 三重校验(缺一不可):
- 数值校验:中商情报网 askci 镜像了国家统计局分省年度库全精度值,URL 模式https://s.askci.com/data/area/fsnd/{6位区划码}/{指标码}(如 A0A0301=居民人均粮食消费量;相邻代码为同组其他指标,需先试采确认含义)。页面可直接 curl(带 UA 头)。年鉴值=askci值四舍五入到0.1,逐点比对。注意:askci 页面数值藏在 HTML 内嵌的 JS 数组里(正则\[[\d.,\s\"]{40,}\]提取),无年份标签,按时间倒序排列(数组首值=最新年份),且约第 10 个值之后会拼接另一指标的数组,比对时只取前几位对应目标年份即可。
- 内部一致性:利用指标间逻辑约束(如 城镇<全体<农村、分项之和≈合计)。
- 外部校验:WebSearch 全国值/典型省值的官方解读与媒体报道(注意甄别网文转录错误——以 askci 全精度值+年鉴原图复核为准)。 - 对识别有疑义的单元格,裁切原图局部重新 Read 复核,不要猜。
交付
- 结构化 Excel 走 tencent-docs-sheet-generation 链路;长表(地区×年份×分组+来源列)+ 对比宽表 + 来源与校验记录 sheet。
- 每条数据带来源:年鉴名、出版年份、章节表号、在线地址。
- 港澳台等无同口径指标的地区:明确记"数据暂缺"+原因,不估算;可附口径不同的替代来源(如台湾《粮食供需年报》为平衡表口径),并醒目标注不可直接比较。