定时抓取全国各省政府采购网的医疗设备招标信息(招标公告/中标结果/合同公告等),按关键词过滤,导出 CSV/JSON。
招标/
├─ crawl_all.js ★一键抓全国(按登记表跑所有就绪省份, 汇总一个CSV)
├─ registry.json 省份→平台→域名→状态 登记表(新增省份改这里)
├─ zcy_scraper.js 政采云平台 通用爬虫(10+省)
├─ bosssoft_scraper.js 博思gpcms平台 通用爬虫(5+省)
├─ fj_zfcg_scraper.js 福建专用(最早样板, 含完整正文导出)
├─ build_report.py 生成"全国招标爬取进展.xlsx"调研进展表
├─ run_daily.bat Windows一键/定时入口
├─ results/ 各省调研结果(JSON, 供进展表汇总)
├─ shared/ 通用方法文档(逆向知识沉淀)
│ ├─ 通用爬取方法-bosssoft政采云平台.md
│ └─ methods/政采云-zcygov.md
└─ 全国医疗招标汇总_YYYY-MM-DD.csv ←输出
| 平台 | 脚本 | 已就绪省份 | 反爬 |
|---|---|---|---|
| 博思 gpcms | bosssoft_scraper.js |
福建、四川、广东、甘肃、海南 | 前端验签(已破解) |
| 政采云 zcygov | zcy_scraper.js |
上海、山西、安徽、浙江、贵州、广西 | 极弱(UA+Referer) |
| 政采云(带WAF) | 同上 | 吉林、青海、新疆 | 阿里云acw_sc__v2(需无头浏览器) |
| Gmsoft/自建/Epoint | 待开发 | 北京、天津、河北、辽宁、河南、重庆、山东… | 各异 |
平台识别原理与签名算法见
shared/下文档。
前置:已装 Node.js(本机 node 可用)。无需 npm install(仅用内置库)。
# 一键抓全国所有"就绪"省份(默认医疗关键词, 近7天)
node crawl_all.js
# 自定义关键词 + 时间窗口(近3天)
node crawl_all.js "医疗设备,CT,监护仪,超声,内镜,核磁" 3
# 只抓某平台
node crawl_all.js "" 7 政采云
node crawl_all.js "" 7 博思gpcms
# 单省抓取(单独脚本)
node zcy_scraper.js 浙江 "医疗设备,CT" 30
node bosssoft_scraper.js 四川 "医疗设备,CT" 30输出:全国医疗招标汇总_YYYY-MM-DD.csv(Excel 可直接打开,UTF-8 BOM)+ 同名 .json。
单省脚本另输出 <省>医疗招标_日期.csv/.json。
省份 / 平台 / 标题 / 公告类型 / 发布时间 / 地区 / 采购单位 / 预算 / 中标供应商 / 金额 / 命中关键词 / 详情链接 (博思平台的单省脚本还含「正文摘要」,列表接口直接返回完整公告正文。)
所有脚本(一键 + 各单省)都从根目录 keywords.txt 读关键词 —— 想改只改这一个文件。
- 格式:一行一个词;空行忽略;
#开头为注释;一行内也可用逗号分隔多个。改完保存即生效,无需动任何脚本。 - 当前默认:医疗设备/医用/医疗器械/CT/核磁/MRI/DR/彩超/超声/内镜/监护仪/呼吸机/麻醉机/生化分析仪/诊断仪/影像/DSA/PET。
- 临时覆盖(不改文件):命令行第1个参数传词,如
node crawl_all.js "CT,核磁,腹腔镜" 7;留空""则用 keywords.txt。 - 匹配:政采云/多数省本地按 标题(+品目+项目名) 过滤;博思用接口
title参数服务端逐词过滤。 - 词越窄越精准,越宽覆盖越全(如"医院/卫生"会带进非设备类)。
所有脚本按发布时间倒序翻页,到「近N天」窗口外自动停止;同一次运行内按 id 去重。 定时跑时建议每天窗口设 2~3 天,足够覆盖且不重复抓全量。
- 编辑
run_daily.bat里的关键词/天数(已给默认)。 - Win 任务计划程序 → 创建基本任务 → 每天 → 操作选
run_daily.bat。 (或schtasks /create /tn 全国医疗招标 /tr "\"%CD%\run_daily.bat\"" /sc daily /st 08:00)
- 在
registry.json加/改该省:{"平台":..., "host":..., "status":"ready"}。 - 若是政采云:把域名加到
zcy_scraper.js的SITES(栏目码会自动探测)。 - 若是博思:把域名加到
bosssoft_scraper.js的SITES(公钥/主栏目自动抓取)。 status含义:ready=已覆盖会抓;waf=需无头浏览器(跳过);todo=待开发(跳过)。
- WAF 政采云(吉林/青海/新疆):用 Playwright 加载首页执行 JS 拿
acw_sc__v2cookie,再带 cookie 调/portal/category。 - Gmsoft(重庆/河南):主站有 JS 挑战,建议改走当地「公共资源交易网」(多为 Epoint,
/inteligentsearch/.../getFullTextData)。 - 自建(北京静态/天津
/portal/topicView.do/辽宁需令牌等):各写一个解析模块,思路见results/<省>.json调研记录。 - 黑龙江/内蒙古:官网域名待确认。
- 兜底:中国政府采购网
ccgp.gov.cn全国站可补充。
仅抓取公开政府采购信息,控制请求频率,遵守各网站 robots 与相关法规。