基于 Playwright 的抖音爬虫 -- SimpleSpider lufei May 29, 2026 # SimpleSpider:一套 Self Hosted 的抖音内容爬取与管理系统 > 本文介绍开源项目 [SimpleSpider](https://github.com/lufy90/SimpleSpider) 能做什么、适合谁用,以及它背后的整体设计思路。项目仅用于学习与研究,请遵守相关法律法规与平台服务条款。 *** ## 为什么做这个项目? 很多人收藏了大量短视频,却缺少一个**自己能掌控**的归档与管理方式:内容散落在平台里,想按自己的标准筛选、打分、批量整理,往往没有趁手的工具。 SimpleSpider 想解决的就是这件事。它不是某个平台的官方客户端,而是一套**可私有化部署**的系统:你可以把喜欢的作者和视频爬下来,在 Web 或手机上浏览、搜索、评分,还能用机器学习模型给视频自动打分。 一句话概括:**爬取 → 存储 → 管理 → 评分 → 再筛选**,整条链路都在你自己手里。 *** ## 它能做什么? ### 1\. 批量爬取内容 爬虫基于 [Playwright](https://playwright.dev/),在真实浏览器环境里工作,适合处理需要登录态的页面。 常见用法包括: * 批量爬取**多位作者**的全部视频 * 按条件爬取**点赞 / 收藏**列表里的视频 * 通过视频链接**单条或分页**抓取 首次使用前,需要在有图形界面的 Linux 桌面上运行 `set_cookies`,手动登录一次,系统会保存 Cookie 供后续任务使用。 ### 2\. 可视化任务下发与监控 不必记命令行。打开 Web 前端,在任务页就能: * 创建爬取、下载等后台任务 * 配置请求数量、过滤条件、是否无头模式等参数 * 查看任务进度、成功/失败数量,必要时复制或重跑任务 后台采用**数据库驱动的任务队列**(不依赖 Celery 等外部中间件),由 `start_workers` 进程常驻拉取并执行任务,部署相对简单。 ### 3\. 作者与视频管理 Web 端(Vue 3 + Element Plus)提供完整的内容管理界面: | 模块 | 主要能力 | | --- | ---- | | 作者 | 列表、搜索、筛选、评分、创建/编辑、发起爬取 | | 视频 | 列表/网格切换、预览播放、下载、评分、筛选 | | 任务 | 创建、监控、复制、删除 |   ### 4\. 人工评分 \+ AI 自动评分 每条视频都可以打星评分。你可以先人工标一批数据,再导出封面或视频帧作为训练集;训练好的 **ONNX 模型**可以挂回系统,对未评分的视频自动打分。 管理命令示例: ```bash # 快速模式:根据封面图评分 python manage.py auto_rate # 精确模式:从视频中抽取多帧取平均 python manage.py auto_rate -p # 导出训练数据 python manage.py export_covers -o dataset python manage.py export_captures --num-captures 5 -o dataset_captures ``` 这样,「先人工筛一批 → 训练模型 → 批量自动筛」的工作流就打通了。 ### 5\. Android 客户端(可选) 除了浏览器,项目还提供 **Kotlin + Jetpack Compose** 编写的 Android 客户端,调用与 Web 相同的后端 API。 手机上可以: * 登录后浏览作者、视频列表 * 竖滑切换视频,点按暂停/继续 * 在播放器里给视频打分 * 在设置里配置 API 地址、随机播放、列表筛选等 预编译 APK 可从项目 README 中的链接获取,也可以用 Android Studio 打开 `android/` 目录自行编译。 *** ## 技术架构一览 ``` ┌─────────────┐ ┌─────────────┐ │ Vue 3 Web │ │ Android │ │ 前端管理台 │ │ 移动端客户端 │ └──────┬──────┘ └──────┬──────┘ │ JWT / REST API │ └─────────┬───────────┘ ▼ ┌─────────────────────┐ │ Django REST API │ │ 用户 / 作者 / 视频 │ └─────────┬───────────┘ │ ┌─────────┴───────────┐ ▼ ▼ ┌──────────────┐ ┌────────────────┐ │ PostgreSQL │ │ Task Workers │ │ 数据持久化 │ │ Playwright 爬虫 │ └──────────────┘ │ 视频下载等 │ └────────────────┘ ``` **后端**:Django + Django REST Framework,JWT 鉴权,默认 PostgreSQL。 **前端**:Vite + Vue 3,构建后的静态文件可由 Nginx 或 Django 托管。 **爬虫与下载**:Playwright 负责页面交互与数据抓取,任务状态写入数据库,Worker 按优先级消费。 **部署**:仓库 `templates/` 目录提供 systemd 与 Nginx 配置模板,适合在 Linux 服务器上长期运行。 *** ## 快速上手(精简版) ### 环境要求 * Linux 桌面环境(设置 Cookie 时需要) * Python 3、Node.js * PostgreSQL * 可选:Android Studio(编译移动端) ### 后端 ```bash cd backend pip install -r requirements.txt playwright install python manage.py migrate python manage.py createsuperuser python manage.py set_cookies # 首次登录授权 python manage.py start_workers --max-concurrent-tasks 2 # 终端 A python manage.py runserver 0.0.0.0:8000 # 终端 B ``` ### 前端 ```bash cd frontend npm install npm run build ``` 构建产物在 `frontend/dist/`,配合 Nginx 或后端静态资源配置即可访问。 记得根据实际部署地址,修改 `frontend/src/config/index.js` 中的 API 域名映射,以及 `backend/backend/settings.py` 中的 CORS 与数据库连接。 更完整的步骤见仓库 [README](https://github.com/lufy90/SimpleSpider/blob/main/README.md)。 *** ## 适合谁? * 想**自建私有媒体库**、不依赖第三方云盘的学习者 * 需要练习 **Django + Vue + 任务队列 + 爬虫** 全栈链路的同学 * 对**视频内容评分、数据集导出、ONNX 推理**感兴趣,想跑通一个小型 ML 闭环的开发者 * 希望在手机上**竖滑刷自己库里的视频**的用户(Android 客户端) *** ## 开源协议与免责声明 本项目采用 **AGPL-3.0-only** 许可。若你修改并在网络上提供服务,需要按 AGPL 要求开放相应源码。 **再次强调**:本项目仅供学习与研究。使用爬虫、下载与存储第三方平台内容时,请务必遵守中华人民共和国相关法律法规及平台用户协议。任何违规使用及其后果由使用者自行承担。 *** ## 结语 SimpleSpider 把「爬下来」和「管起来」放在同一套系统里:Web 负责重度管理与任务编排,Android 负责随手浏览,后端 Worker 在后台默默干活,评分模块则让内容库越用越「懂你的口味」。 如果你感兴趣,欢迎到 GitHub 仓库 Star、提 Issue,或 fork 后按自己的需求改造。 **项目地址**:[https://github.com/lufy90/SimpleSpider](https://github.com/lufy90/SimpleSpider) Attached Files 2 Show Files Images video_list_page.png View author_list_page.png View
Comments (0)
Leave a Comment
No comments yet. Be the first to comment!