教育信息化招投标公告检索与分析(tender-bid-scraper)
你将得到什么
- 从公开招投标/政府采购网站批量定位公告,并从详情页抽取结构化字段
- 基础字段:公告标题、公告类型、发布日期、预算金额、截止时间、地区、采购方式、采购人/招标人、代理机构、项目编号、公告链接
- 行业分析字段:公告阶段、产品线分类、相关性评分(0-100)、商机优先级(高/中/低/极低)、推荐动作、命中关键词、中标供应商、中标金额
- 附件关键条款:资质要求、技术参数、评分办法、服务要求、交付工期、付款方式、风险提示
- 面对偶发验证码/滑块:自动走"优先直抓 → 浏览器模式(可人工接管)"的降级流程
安装依赖
pip install -r requirements.txt
> pdfplumber 与 python-docx 用于可选附件解析;pyyaml 用于加载教育信息化关键词库。
推荐工作流
- 确定检索范围:全国公共资源交易平台、政府采购网体系、招标投标公共服务平台及地方站
- 获取候选公告链接:用
search_web做全网定位(推荐关键词:智慧校园、校园网、云桌面、录播教室、教学设备、教育软件、考试系统、网络安全、等保、信息化运维) - 抓取详情页:用脚本批量抓取 URL 列表;若出现验证码则切到浏览器模式
- 字段抽取与行业分析:自动完成产品线分类、相关性评分、关键条款抽取
- 导出:CSV(数据分析)+ Markdown(商机报告,含汇总统计)
脚本用法
基本用法:
python scripts/tender_extract.py --urls urls.txt --out out/result
开启附件解析:
python scripts/tender_extract.py --urls urls.txt --out out/result --parse-attachments
只看高分商机:
python scripts/tender_extract.py --urls urls.txt --out out/result --min-score 50
自定义关键词库:
python scripts/tender_extract.py --urls urls.txt --out out/result --keywords-config references/edu_it_keywords.yaml
全部参数
| 参数 | 说明 | 默认值 |
|---|---|---|
--urls |
URL 列表文件(必填) | — |
--out |
输出前缀(必填) | — |
--limit |
只处理前 N 条 | 0(不限制) |
--parse-attachments |
启用附件下载与解析 | 关闭 |
--attach-text-max-chars |
附件文本摘要最大字符数 | 2000 |
--keywords-config |
关键词库 YAML 路径 | references/edu_it_keywords.yaml |
--disable-industry-score |
禁用行业评分 | 启用 |
--min-score |
只输出评分 >= N 的记录 | 0(不过滤) |
输出字段
基础字段(16 项)
公告标题、公告类型、发布日期、预算金额、截止时间、地区、采购方式、采购人/招标人、代理机构、项目编号/标段编号、公告链接、附件链接、附件解析状态、附件文本摘要、抓取状态、备注
行业分析字段(P1,17 项新增)
| 字段 | 说明 |
|---|---|
| 公告阶段 | 采购意向/招标公告/中标公告/成交公告/废标公告等 11 种 |
| 产品线分类 | 命中的产品线,多个用顿号分隔 |
| 教育信息化相关性评分 | 0-100 分,见评分规则 |
| 商机优先级 | 高/中/低/极低 |
| 推荐动作 | 基于优先级的建议操作 |
| 命中关键词 | 匹配到的行业关键词 |
| 强命中关键词 | 匹配到的强相关关键词 |
| 排除命中词 | 匹配到的全局排除词 |
| 中标供应商 | 中标/成交公告中的供应商名称 |
| 中标金额 | 中标/成交金额 |
| 资质要求摘要 | 供应商资格、证书、业绩等 |
| 技术参数摘要 | 技术规格、功能要求、设备清单等 |
| 评分办法摘要 | 评标标准、技术分/商务分/价格分等 |
| 服务要求摘要 | 售后、运维、质保、培训等 |
| 交付工期摘要 | 交付期、工期、供货期等 |
| 付款方式摘要 | 付款条件、预付款、验收支付等 |
| 风险提示 | 原厂授权、指定品牌、等保信创等风险项 |
相关性评分规则
| 条件 | 分值 |
|---|---|
| 标题命中教育信息化关键词 | +30 |
| 正文命中教育信息化关键词 | +15 |
| 附件摘要命中教育信息化关键词 | +15 |
| 命中强相关关键词 | +20 |
| 命中多个产品线 | +5~15 |
| 标题/采购单位含教育主体词(学校、教育局等) | +15 |
| 有预算金额 | +5 |
| 有明确截止时间 | +5 |
| 命中全局排除词(医疗/公安/政务等) | -30 |
| 标题明显非教育行业 | -20 |
| 采购单位为非教育主体 | -20 |
商机优先级
| 评分区间 | 优先级 | 推荐动作 |
|---|---|---|
| 80-100 | 高 | 建议重点跟进,优先查看附件技术参数和评分办法 |
| 50-79 | 中 | 建议人工复核,确认是否匹配公司产品线 |
| 20-49 | 低 | 可低优先级关注 |
| 0-19 | 极低 | 建议忽略,疑似非教育信息化项目 |
关键词库
位于 references/edu_it_keywords.yaml,支持 12 个产品线分类:智慧校园、校园网络、智慧教室、教育软件、云桌面、教学终端、网络安全、数据中心、运维服务、考试招生、职教实训、AI 教育。
每个分类含三级关键词:include(基础命中)、strong_include(强相关,提升评分)、exclude(局部排除)。
可自行扩展,格式见 YAML 文件内注释。
反爬与验证码处理
- 不要尝试绕过验证码/滑块
- 遇到验证码:记录失败 → 浏览器模式 → 请求用户接管 → 继续
质量检查清单
- URL 自动去重(规范化 + 移除跟踪参数)
- 日期标准化为 YYYY-MM-DD
- 截止时间标准化为 YYYY-MM-DD HH:MM
- 公告类型归一
- 关键字段缺失时保留空值
- 产品线可命中多个,用顿号分隔
- 命中全局排除词不删除记录,只降低评分
资源
scripts/tender_extract.py:主脚本(抓取、抽取、评分、导出)references/edu_it_keywords.yaml:教育信息化关键词库references/field_schema.md:字段定义与归一化规则references/site_hints.md:目标站点结构与字段别名requirements.txt:运行依赖