Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

全国政府采购·医疗设备招标 自动爬取项目

定时抓取全国各省政府采购网的医疗设备招标信息(招标公告/中标结果/合同公告等),按关键词过滤,导出 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 维护)

所有脚本(一键 + 各单省)都从根目录 keywords.txt 读关键词 —— 想改只改这一个文件。

  • 格式:一行一个词;空行忽略;# 开头为注释;一行内也可用逗号分隔多个。改完保存即生效,无需动任何脚本。
  • 当前默认:医疗设备/医用/医疗器械/CT/核磁/MRI/DR/彩超/超声/内镜/监护仪/呼吸机/麻醉机/生化分析仪/诊断仪/影像/DSA/PET。
  • 临时覆盖(不改文件):命令行第1个参数传词,如 node crawl_all.js "CT,核磁,腹腔镜" 7;留空 "" 则用 keywords.txt。
  • 匹配:政采云/多数省本地按 标题(+品目+项目名) 过滤;博思用接口 title 参数服务端逐词过滤。
  • 词越窄越精准,越宽覆盖越全(如"医院/卫生"会带进非设备类)。

增量与去重

所有脚本按发布时间倒序翻页,到「近N天」窗口外自动停止;同一次运行内按 id 去重。 定时跑时建议每天窗口设 2~3 天,足够覆盖且不重复抓全量。

定时运行(Windows 任务计划)

  1. 编辑 run_daily.bat 里的关键词/天数(已给默认)。
  2. Win 任务计划程序 → 创建基本任务 → 每天 → 操作选 run_daily.bat。 (或 schtasks /create /tn 全国医疗招标 /tr "\"%CD%\run_daily.bat\"" /sc daily /st 08:00

新增/修复一个省份

  1. registry.json 加/改该省:{"平台":..., "host":..., "status":"ready"}
  2. 若是政采云:把域名加到 zcy_scraper.jsSITES(栏目码会自动探测)。
  3. 若是博思:把域名加到 bosssoft_scraper.jsSITES(公钥/主栏目自动抓取)。
  4. status 含义:ready=已覆盖会抓;waf=需无头浏览器(跳过);todo=待开发(跳过)。

待办(未就绪省份的方向)

  • WAF 政采云(吉林/青海/新疆):用 Playwright 加载首页执行 JS 拿 acw_sc__v2 cookie,再带 cookie 调 /portal/category
  • Gmsoft(重庆/河南):主站有 JS 挑战,建议改走当地「公共资源交易网」(多为 Epoint,/inteligentsearch/.../getFullTextData)。
  • 自建(北京静态/天津 /portal/topicView.do/辽宁需令牌等):各写一个解析模块,思路见 results/<省>.json 调研记录。
  • 黑龙江/内蒙古:官网域名待确认。
  • 兜底:中国政府采购网 ccgp.gov.cn 全国站可补充。

合规

仅抓取公开政府采购信息,控制请求频率,遵守各网站 robots 与相关法规。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages