公共资源交易中心爬虫 + AI 处理系统

自动采集浙江省/台州市公共资源交易中心的招标信息,经 DeepSeek AI 提取结构化字段后,上传至简道云表单。

爬虫采集 → 字段映射 → 内容获取(页面+附件) → DeepSeek AI 提取 → 简道云上传

支持的管道

站点 公告类型 AI 提取字段 简道云表单
浙江省 招标文件公示 类型、地区、投标截止日、最高投标限价、最高限价、资质要求、业绩要求、评标办法、评分说明与资信评分标准、有无答辩、招标人、项目概况、造价付款方式 浙江招标文件公示
浙江省 招标公告 批准文号、投标截止日 浙江招标公告
浙江省 澄清修改 批准文号 浙江澄清修改
台州市 招标计划公示 预估金额、类型、批准文号 台州招标计划
台州市 招标公告 批准文号、投标截止日 —(暂无表单)

快速开始

安装依赖

pip install requests beautifulsoup4 pdfplumber python-docx

单次运行

# 仅爬取
python main.py -s zhejiang -c 工程建设 -t 招标文件公示 -p 5 -d yesterday

# 爬取 + AI 处理
python main.py -s zhejiang -c 工程建设 -t 招标文件公示 -p 5 -d yesterday -P

# 爬取 + AI 处理 + 上传简道云
python main.py -s zhejiang -c 工程建设 -t 招标文件公示 -p 5 -d yesterday -P -U

# 台州招标计划
python main.py -s taizhou -c 工程建设 -t 招标计划公示 -p 3 -d yesterday -P -U

# 全部站点
python main.py -s all -c 工程建设 -t 招标公告 -p 1 -d yesterday -P

参数说明

参数 说明 示例
-s 站点 zhejiang / taizhou / all
-p 爬取页数 5(默认 5
-c 交易领域 工程建设 / 政府采购
-t 公告类型 招标文件公示 / 招标公告 / 澄清修改 / 招标计划公示
-d 日期过滤 yesterday / 2026-02-10
-a 下载附件 开关
-P 启用 AI 处理 开关,需配合 -t
-U 上传简道云 开关,需配合 -P

定时任务

# 直接运行(采集昨天全部任务)
python scheduler.py

# Windows 计划任务(每天 08:00
schtasks /create /tn "ZTB_Spider" /tr "python C:\path\to\ztb\scheduler.py" /sc daily /st 08:00

scheduler.py 中的 DAILY_TASKS 定义每天自动执行的任务,当前配置:

  • 浙江 招标文件公示20 页 + AI + 上传)
  • 台州 招标计划公示7 页 + AI + 上传)

项目结构

ztb/
├── main.py                  # 命令行入口
├── scheduler.py             # 定时任务入口
├── config.py                # 全局配置站点、AI、简道云
├── spiders/
│   ├── base.py              # 爬虫基类(限速、重试、熔断)
│   ├── zhejiang.py          # 浙江省爬虫
│   └── taizhou.py           # 台州市爬虫
├── processors/
│   ├── pipeline.py          # 处理管道(串联全流程)
│   ├── content_fetcher.py   # 页面 + 附件内容获取
│   ├── deepseek.py          # DeepSeek AI 字段提取
│   └── jiandaoyun.py        # 简道云上传
├── utils/
│   └── attachment.py        # 附件下载工具
├── data/                    # 输出CSV + JSON
├── logs/                    # 日志
└── temp_files/              # 临时附件(自动清理)

数据流

1. 爬虫输出

浙江省:标题、发布日期、地区、公告类型、链接、来源 + 项目名称、项目代码、招标人、招标代理、联系电话、招标估算金额

台州市:标题、发布日期、地区、链接、来源 + 项目名称、招标人、项目批准文号、项目类型、计划招标时间、预估合同金额(万元)

2. 字段映射pipeline._map_fields

标题             → 名称
发布日期         → 发布时间 + 项目发布时间
链接             → 招标文件链接 / 公告链接 / 数据源链接 / 澄清文件链接
公告类型         → 招标阶段
项目批准文号     → 批准文号
项目类型         → 类型
预估合同金额     → 预估金额(自动补"万元"
计划招标时间     → 招标时间

3. AI 提取 → 合并

  • AI 值有效(非"文档未提及")→ 覆盖原值
  • AI 返回"文档未提及" → 保留爬虫原值

4. 输出文件

  • CSVdata/浙江省公共资源交易中心_20260211_092500.csv
  • JSONdata/浙江招标文件公示_AI处理_20260211_093446.json

安全机制

爬虫层BaseSpider

机制 配置值 说明
请求速率 10 次/分钟 超出自动等待
列表页延迟 36 秒 随机间隔
详情页延迟 25 秒 随机间隔
最大请求数 300 次/运行 超出停止
连续失败熔断 5 次 触发后停止
空响应检测 ≤10 bytes 反爬拦截后指数退避重试
优雅退出 Ctrl+C 保存已采集数据后退出

AI 处理层ContentFetcher

机制 配置值 说明
请求速率 12 次/分钟 独立限速
请求延迟 1.53 秒 每次请求前随机等待
附件大小限制 50 MB 超出跳过
内容长度限制 120,000 字符 超长内容智能截取关键段落
API 失败回退 本地正则 DeepSeek 不可用时降级提取
临时文件清理 自动 解析后立即删除

配置说明

所有配置集中在 config.py

  • SPIDER_CONFIG — 爬虫延迟、重试、限速
  • DEEPSEEK_API_KEY — DeepSeek API 密钥
  • PROCESSING_CONFIG — AI 处理超时、内容长度限制
  • REGION_CONFIGS — 每个管道的 AI 字段定义
  • DEEPSEEK_PROMPTS — 15 个字段的提示词模板
  • JDY_CONFIG — 简道云表单 ID 和字段映射

添加新管道

  1. REGION_CONFIGS 中添加 "site:notice_type" 条目
  2. 如需新的 AI 字段,在 DEEPSEEK_PROMPTS 中添加提示词
  3. 如需上传,在 JDY_CONFIG["forms"] 中添加表单配置
  4. 可选:在 scheduler.pyDAILY_TASKS 中添加定时任务

测试记录2026-02-11

5 个管道全部通过71 条记录 AI 处理成功率 100%

管道 爬取 AI 成功 耗时
台州 招标计划公示 1 条 1/1 ~12 秒
浙江 招标文件公示 20 条 20/20 ~10 分钟
浙江 招标公告 20 条 20/20 ~3 分钟
浙江 澄清修改 20 条 20/20 ~2 分钟
台州 招标公告 10 条 10/10 ~2 分钟
Description
No description provided
Readme 195 KiB
Languages
Python 94.6%
Shell 5.4%