Python爬虫实战:政府年度统计公报PDF批量爬取与文本解析系统(附完整代码)

1. 前言:为什么需要自动化采集统计公报?

各级政府每年发布的统计公报是经济、人口、教育、医疗等领域最权威的数据来源之一。然而,这些公报通常以PDF格式分散在各个政府网站的“政务公开”→“统计信息”栏目下,手动下载动辄数百份文件,复制粘贴文字更是效率低下且容易出错。

本项目的目标

  • 自动爬取某省级统计局官网的年度统计公报PDF链接

  • 批量下载PDF文件

  • 将PDF转换为结构化纯文本

  • 清洗并提取关键指标(如GDP、常住人口、城镇化率等)

  • 最终输出为CSV/JSON,便于数据分析或可视化

技术栈选择(2026年最新)

  • 网络请求httpx(支持HTTP/2,异步更快)+tenacity(智能重试)

  • PDF解析pymupdf(即fitz,速度最快,保留布局)+pdfplumber(表格提取备用)

  • OCR备用pytesseract+pdf2image(针对扫描版PDF)

  • 文本处理re+pandas+jieba(中文分词,用于指标定位)

  • 爬虫框架:轻量级requests亦可,但本案例使用asyncio + aiohttp展示并发能力

声明:本教程仅用于合法公开数据的自动化采集,请遵守目标网站的robots.txt及法律法规,设置合理请求间隔。


目录

1. 前言:为什么需要自动化采集统计公报?

2. 环境准备与依赖安装

2.1 Python版本与虚拟环境

2.2 安装核心库

2.3 外部依赖(OCR方案)

3. 系统架构与流程设计

4. 第一步:获取PDF下载链接(以某省统计局为例)

4.1 分析目标网站结构

4.2 编写列表页解析函数

5. 第二步:批量下载PDF文件(并发 + 断点续传)

5.1 文件命名与存储结构

5.2 异步下载器实现

6. 第三步:PDF转文本 —— 多引擎策略

6.1 首选引擎:PyMuPDF(fitz)

6.2 备选引擎:pdfplumber(擅长表格)

6.3 最终后备:OCR(Tesseract)

6.4 智能路由函数

7. 第四步:文本深度清洗与预处理