最近我把自己的一个 Playwright quotes 爬虫项目,彻底从“能跑脚本”升级成了一个 任务化 AI 数据平台原型。
它现在已经不是简单的:
爬一遍网页 → 输出一个 json → 结束
而是升级成了:
任务创建 → 历史记录 → FastAPI 服务 → Streamlit 可视化控制台
整个项目的工程感和展示感,直接提升了一个 level。
一、为什么普通爬虫脚本不够用了
我最开始的版本很简单:
- Playwright 抓 quotes.toscrape.com
- 保存到本地 json
- 做作者和 tag 统计
- 输出分析结果
这种写法能跑,但很快我发现几个明显问题:
1)结果会被覆盖
每次运行都写:
data/quotes_all.json
新的结果会覆盖旧结果。
2)没有任务历史
你根本不知道:
- 上一次抓了多少页
- 用的 local 还是 llm
- 哪次成功哪次失败
3)没有 API 能力
它本质上还是一个:
只能本地命令行触发的脚本
没法被前端、接口或者其他服务调用。
4)没有展示层
即使结果出来了,也只是:
- json 文件
- txt 文件
- 终端日志
很难直接展示给别人看。
二、第一步:把脚本升级成任务系统
我的第一步改造,就是引入:
task_id + task directory
每次执行任务都生成独立目录:
data/tasks/<task_id>/
目录里保存:
meta.json
quotes_all.json
llm_report.txt
📌 meta.json 存什么
每个任务都记录:
{
"task_id": "8be74a50",
"pages": 2,
"mode": "local",
"status": "success",
"created_at": "2026-03-30T11:36:28"
}
✅ 这一步带来的提升
这一步之后,项目第一次有了:
- 任务生命周期
- 任务状态管理
- 历史结果可追踪
- 独立结果持久化
本质上已经不是一次性脚本了。
三、第二步:FastAPI 服务化
下一步我做的是:
把 run_task() 暴露成 HTTP API
核心接口非常简单:
POST /tasks/run
GET /tasks
GET /tasks/{task_id}
分别负责:
- 创建任务
- 查看历史任务
- 查看任务详情
🚀 为什么这一步很关键
因为这一步完成之后,整个项目从:
本地脚本
升级成了:
后端服务
任何前端、Dashboard、甚至别的 Agent 系统都可以直接调用。
📄 Swagger 自动文档
FastAPI 的一个高收益点是:
http://127.0.0.1:8000/docs
可以直接自动生成接口文档。
这一步对于项目展示非常加分。
四、第三步:接一个 Streamlit Dashboard
后端有了之后,我没有继续卷接口,而是直接接了一个:
轻量可视化控制台
左边负责:
- pages(抓几页)
- mode(local / llm)
- Run Task(创建任务)
右边负责:
- 历史任务列表
- success / failed 状态
- task_id
- 点开看详情
🎛️ 左侧任务控制面板
本质上就是:
向 FastAPI 发一个 POST 请求创建任务
📂 右侧任务详情
每个任务点开后可以看到:
- meta
- quotes 原始数据
- report 分析结果
这一下项目的“产品感”就完全出来了。
五、项目最终架构
现在整个项目结构变成了:
Playwright → Task Pipeline → FastAPI → Streamlit Dashboard
它已经具备:
- 浏览器自动化
- 数据提取
- 任务管理
- 状态追踪
- API 服务
- 可视化控制台
六、这次升级最大的收获
我这次最大的感受不是“功能更多了”。
而是第一次真正体会到:
脚本和系统,差的不是代码量,而是结构
同样是 Playwright 爬虫:
普通版本
抓数据 → 输出文件
升级版本
创建任务 → 保存状态 → 查询历史 → API 调用 → Dashboard 展示
工程味完全不一样。
七、下一步优化方向
接下来我准备继续往下面几个方向迭代:
- PostgreSQL 替代 JSON 存储
- 后台异步任务队列
- 多站点抓取
- LLM 深度分析
- RAG / 向量检索
- Docker 部署
已经越来越像一个小型 AI 数据平台了。
八、总结
这次项目升级让我更确定一件事:
学生项目真正拉开差距的,不是多做功能,而是把一个能跑的东西做成“像系统”的样子。
从:
爬虫脚本
到:
任务化 AI 数据平台
这一步的收益,远比盲目开新项目高。
如果你也在做 Playwright、FastAPI、AI Agent 或 Python 工程项目,希望这篇文章能给你一些结构化升级思路。