告别写爬虫脚本:我做了一个可视化拖拽式的通用采集平台 CMSSpider
开源地址:https://github.com/wangxm-spec/CMSSpider
技术栈:Python 3.11 + FastAPI + React 18 + Playwright + Chrome 扩展(Manifest V3)
先说三句实话,放在最前面:
这个项目是 AI 写的——从架构搭建到功能实现,基本全程由 AI 辅助完成,我负责提需求、定方案、验收。
一步一步调试出来的——AI 写完不等于能用,每一个节点、每一条链路都是人工跑通、排错、磨出来的,坑都踩过了。
我们公司自己在用——它不是玩具 demo,是生产环境里每天在跑的内部工具。但也正因为它定位是"自用工具",没有特殊需求不会主动更新,Issue 我会看,但不保证响应速度。
如果你能接受这个前提,往下看,这个工具可能正好是你想要的。
一、为什么做这个项目
团队里经常有这类需求:抓某个列表页的更新、定时采集后台数据、把页面数据推送到内部系统。传统做法有两种:
让开发写一次性爬虫脚本——快,但每次需求变了都要改代码,非开发同学完全用不了;
上商用采集工具——功能全,但要么贵,要么定制受限,内网环境还不好部署。
所以我想要的是这样一个东西:
不会写代码的人也能用:拖拖节点、点点页面元素,就能配出一条采集流程;
开发不用反复救火:流程改了自己拖两下就行,不用找我改脚本;
部署足够简单:Windows 机器上一键装、双击跑,内网也能用;
该有的能力都有:定时调度、AI 辅助、各种存储出口,一样不缺。
这就是 CMSSpider。
二、核心玩法:像画流程图一样采集
CMSSpider 的核心是一张 DAG 工作流画布。一条采集任务就是一串节点:
PLAINTEXT
开始 → 打开页面 → 元素选择 → 数据清洗 → 数据存储 → 结束
全部基于 React Flow 的拖拽式编辑器,节点连上线、配置填一填,一个采集流程就出来了。支持:
12 种内置节点:打开页面、元素选择、条件判断、循环翻页、数据清洗(正则/格式化/去重/过滤)、数据存储、HTTP 上传、AI 处理、截图、文件下载……
实时调试:编辑器里点"调试运行",抽屉里实时滚动执行日志和采集结果,哪一步错了当场看到;
版本管理:工作流改坏了随时回退。
三、最好用的功能:Chrome 扩展点选元素
配爬虫最烦的是写选择器。CMSSpider 配了一个 Chrome 扩展(Manifest V3):
在工作流的「元素选择」节点上点"点选"按钮;
切到目标网页,鼠标悬停哪里,哪里就有蓝色高亮框;
单击确认,CSS Selector / XPath 自动回填到节点配置里。
还支持跨标签页点选——列表页选一次、详情页选一次,两条流程就串起来了。列表批量采集、悬停高亮预览都做了,还会自动排除平台自己的页面防止误点。
这个功能是非开发同学用得最多的:不用懂任何选择器语法,会点击就行。
四、AI 增强:让大模型帮忙"看"页面
平台支持配置多个 AI 提供方(填 Base URL、API Key、模型名即可),工作流里可以插入「AI 处理」节点:
智能识别页面结构、推荐字段;
用自然语言描述需求,生成采集规则;
AI 多模态可以直接消费工作流里下载的文件(图片等),比如对下载的截图做识别、提取。
AI 是运行期配置,不走配置文件——界面上加一个提供方,工作流下拉框里选一下就能用,不同工作流可以用不同的模型。
五、调度、存储、凭证,工程上该有的都有
定时任务:APScheduler + Cron 表达式,工作流列表里点一下就能配周期任务,每天凌晨自动跑。
存储出口:
本地 SQLite(默认,零配置);
阿里云 OSS / 七牛云 / 火山引擎 TOS;
HTTP 上传端点——把采集结果 POST/PUT 到任意 API,我们就是用它把数据直接灌进内部系统的。
凭证管理:用户名/密码/Cookie/Token 集中管理,Fernet 加密落库,工作流里用 ${cred.xxx} 引用,敏感信息不用明文写在流程里。
全局变量:${global.xxx} 跨工作流复用,换目标站点只改变量不改流程。
六、反爬与稳定性
Playwright 驱动 Chromium,JS 动态渲染(SPA)页面直接拿下;
自动 User-Agent、请求间隔控制、Cookie/Session 自动管理;
登录后的页面:配好凭证就能采;
验证码:可选集成 ddddocr,算数验证码直接过;
高级玩法:Hook 脚本(预执行脚本,有 loopback IP 限制,不裸奔);
全程截图留存,出了问题可以回溯审计。
七、部署:一键启动,一键打包,绿色拷贝
这是我比较得意的部分,整个运维被压缩成两条命令:
开发期:
POWERSHELL
python scripts\start.py自动清残留进程、起后端(8011)、起前端(3011)、健康检查,然后访问 http://localhost:3011 就能用。
发布期:
POWERSHELL
python scripts\build.py交互式问几个端口问题,然后打出一个离线绿色版 release/ 目录:依赖全部下载成本地 wheels、前端预构建、Chrome 扩展打成 zip。拷到任何一台 Windows 机器上:
双击
install.bat——建 venv、离线装依赖、装 Playwright Chromium;双击
start.bat——一个 Python 进程同时托管后端 API 和前端页面。
目标机不需要装 Python 环境、不需要 Node.js,U 盘拷过去就能跑,内网部署毫无压力。
八、技术栈一览
层级 | 选型 |
|---|---|
后端 | Python 3.11 + FastAPI + SQLAlchemy 2.0 (async) + APScheduler |
采集引擎 | Playwright(Chromium) |
前端 | React 18 + TypeScript + Vite + Ant Design 5 |
流程画布 | @xyflow/react(React Flow) |
浏览器扩展 | Manifest V3 + Rollup,跨标签页点选 |
存储 | SQLite(aiosqlite)/ OSS / HTTP 端点 |
加密 | cryptography (Fernet) |
九、适合谁用 & 不适合谁
适合:
有大量重复性"采数据→推送"需求的团队,想让运营/产品自己配流程;
需要内网私有化部署、不想数据出网的场景;
想要一个能改源码、能接自己系统的采集底座(MIT 协议,随便改)。
不适合 / 注意:
目前只在 Windows 上做过端到端测试,macOS/Linux 脚本入口没做,理论可移植但未验证;
这是一个自用开源项目,没有特殊需求不会更新,别指望商业软件级别的支持;
请遵守目标网站的 robots 协议和法律法规,采集来的数据自己负责。
十、快速上手
BASH
git clone https://github.com/wangxm-spec/CMSSpider.git
cd CMSSpider
python scripts\start.py
然后加载 chrome-extension/dist/ 里的扩展(chrome://extensions 开发者模式 → 加载已解压的扩展程序),新建一个工作流,拖上"开始 → 打开页面 → 元素选择 → 数据存储 → 结束",点选一个元素,调试运行——你的第一条流程就通了。
详细的环境要求、配置说明、常见问题都在仓库 README 里。
最后
再重复一遍开头的话:这是 AI 写的、人工一步步调试的、我司生产在用的自用工具,没特殊需求不更新。
它不完美,但它每天在真实环境里跑着,帮我们省了大量重复劳动。如果你正好有类似的需求,欢迎拿去用、拿去改,觉得不错点个 Star 就是对它最大的支持。
