返回项目

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 快很多)

安装

bash
git 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

标签

crawlermediaxhsdouyinbilibiliweiboplaywrightdata-collectionai-automation
~/安装方式

# source

$git clone https://github.com/NanmiCoder/MediaCrawler.git
$cd MediaCrawler && uv sync
$uv run playwright install

# usage

$uv run main.py --platform xhs --lt qrcode --type search
$uv run main.py --platform xhs --lt qrcode --type detail
$uv run uvicorn api.main:app --port 8080 --reload
MediaCrawler | 资讯狗 | Zixungou