MediaCrawler
如要从小红书、抖音、B 站、微博等自媒体平台抓数据又不想硬逆向每个平台的 JS 签名,可以采用这个仓库。
项目定位
MediaCrawler 是一个把"抓自媒体数据"这件事做到一把梭的开源爬虫。支持 7 大平台(小红书 / 抖音 / 快手 / B 站 / 微博 / 百度贴吧 / 知乎),统一的命令行入口,关键词搜索、指定帖子、评论、创作者主页全都能抓。47K+ star、10K+ fork,持续维护。
⚠️ 作者明确声明:仓库仅供学习参考,禁止商业用途。接下来说的所有能力都建立在"你知道自己在做合规研究"这个前提上。
做 AI 自动化 / Agent 时为什么用它
当你要做下面这些事的时候,自媒体数据是绕不开的原料:
- 训练一个"选题助手"Agent:需要最近热门笔记 / 评论 / 互动数据
- 做舆情监控或品牌分析:需要跨平台抓评论、情感分析
- 给 RAG 喂本地知识库:某个博主的历史内容、某个话题的完整讨论
- 自媒体内容复盘:自己账号的爆款特征、对标账号的节奏
自己手搓这些爬虫的坑:每个平台的签名算法都不一样,抖音 a_bogus、小红书 x-s、B 站 wbi……逆向一次要几天,平台一更新就废。MediaCrawler 的做法是绕开逆向:用 Playwright 打开真浏览器,保留登录态,需要签名时直接在浏览器里执行 JS 拿结果。算法再改都不用你管。
这是为什么它应该进 auto 分类——AI 自动化场景下,它就是"自媒体数据采集"这一层现成的轮子,不用重写。
支持的平台和能力矩阵
所有平台都支持下面这 7 种能力:
| 能力 | 说明 |
|---|---|
| 关键词搜索 | 搜一个词,批量抓结果列表 |
| 指定帖子 ID 抓取 | 已知链接 / ID,只抓这条 |
| 二级评论采集 | 评论 + 评论的回复,完整层级 |
| 创作者主页抓取 | 整个博主的历史内容 |
| 登录态缓存 | 扫码一次,后面复用 |
| IP 代理池 | 内置代理配置,降低被封概率 |
| 评论词云图 | 开箱即用的可视化 |
7 个平台 × 7 种能力 = 开源版本的完整能力矩阵。
为什么这种技术选型值得抄
- Playwright 做反爬兜底:真浏览器环境,自动跑 JS 签名,不逆向。
- 登录态 = 浏览器上下文:扫码登录一次,下次直接复用 Cookie + localStorage。
- 异步并发:Python asyncio,单机就能跑多平台并发抓取。
- 存储解耦:CSV / JSON / Excel / SQLite / MySQL 都支持,按场景切换。
对想做 AI 自动化的同学来说,这套架构就是"如何用 LLM 时代的工具栈重做一个爬虫"的活教材。
上手方式
前置条件
- Python 3.11+
- Node.js ≥ 16(Playwright 依赖)
- 推荐用
uv(比 pip + venv 快很多)
安装
bashgit clone https://github.com/NanmiCoder/MediaCrawler.git cd MediaCrawler uv sync uv run playwright install
开抓
bash# 关键词搜索模式(扫码登录后自动开抓) uv run main.py --platform xhs --lt qrcode --type search # 指定帖子详情模式 uv run main.py --platform xhs --lt qrcode --type detail # WebUI 可视化模式(默认 8080 端口) uv run uvicorn api.main:app --port 8080 --reload
参数说明:
--platform:xhs/dy/ks/bili/wb/tieba/zhihu--lt(login type):qrcode扫码 /phone手机号 /cookie直接传--type:search搜索 /detail指定 /creator主页
配置项统一在 config/base_config.py,中文注释写得很清楚。
典型使用场景
场景 1:做"选题雷达"Agent 的数据源
每天定时跑一次抖音 + 小红书的关键词搜索,把结果写进 SQLite,交给下游的 LLM 总结今天值得做的选题。
场景 2:自己账号的爆款复盘
--type creator 抓自己历史笔记,交给 LLM 分析标题 / 开头 / 话题标签模式,输出可复用的创作模板。
场景 3:品牌舆情监控
跨 7 个平台搜同一个品牌词,所有评论存到 MySQL,接 LLM 做情感分类和问题聚类。
场景 4:给本地知识库喂料
某个领域的头部博主 + 某几个专题标签,--type creator + --type search 组合抓一遍,数据直接进 RAG。
开源版 vs Pro 版的边界
作者维护了一个 MediaCrawlerPro 付费版本,差异主要在:
| 能力 | 开源版 | Pro 版 |
|---|---|---|
| 核心爬取(7 平台 × 7 能力) | ✅ | ✅ |
| 断点续爬 | ❌ | ✅ |
| 去 Playwright 依赖、更轻量 | ❌ | ✅ |
| 完整 Linux 服务端支持 | 一般 | ✅ |
| 视频下载器桌面端 | ❌ | ✅ |
| AI Agent 内容拆解 | ❌ | ✅ |
判断建议:做研究、做个人 Agent、做小项目 → 开源版足够。要在服务器上长期跑、断点续爬、量级大 → 考虑 Pro。
边界与合规提醒
- 仅限学习研究,不要拿来做商业数据采集服务,README 写得明明白白。
- 抓到的数据包含他人版权内容,二次使用时请注意平台 ToS 和国内法规(网络安全法 / 个保法 / 数据安全法)。
- 评论和用户主页里的个人信息属于敏感数据,不要留存到公开的数据库、不要上传到公网对象存储。
- 平台反爬策略会持续升级,某个平台短期抓不动是正常的——这是爬虫的命运,不是这个项目的 bug。
一句话总结
做 AI 自动化要自媒体数据,但不想跟各平台的签名算法死磕——MediaCrawler 就是那个让你把精力留给 Agent 逻辑、而不是留给 JS 逆向的轮子。开源版能力足够大多数研究和个人项目,记得只用在合规场景。
语言
Python
分类
AI自动化
许可证
MIT
更新时间
4/11/2026
标签