MediaCrawler:一款多平台自媒体数据采集工具(项目介绍、安装部署与使用方法)

11次阅读
没有评论

一句话介绍:MediaCrawler 是一个开源的多平台自媒体数据采集工具,支持小红书、抖音、快手、B 站、微博、贴吧、知乎等平台的公开帖子与评论采集,适合用来做内容研究、舆情观察和数据整理。

免责声明:本项目作者明确表示仅供学习和研究使用,禁止用于商业用途和非法用途。使用时请遵守当地法律法规与各平台的服务条款,不要采集非公开、隐私或付费内容,不要用于大规模爬取和绕过平台风控。

项目速览

  • 项目地址:https://github.com/NanmiCoder/MediaCrawler
  • 官方文档:https://nanmicoder.github.io/MediaCrawler/
  • 开发语言:Python,配合 Node.js 使用
  • 创建时间:2023 年 6 月
  • 截至 2026 年 10 月 25 日核查:约 68,458 Star、13,037 Fork,累计 827 次提交,最新提交为 2026 年 10 月 15 日,项目仍在维护(Star 数会随时间变化,以仓库页面为准)
  • 许可证说明:仓库标注为 NOASSERTION,使用前请以仓库内的 LICENSE 文件为准

它能做什么

MediaCrawler 的核心功能,是把多个平台的公开内容统一成结构化数据,而不是让你一个平台一个平台手动翻:

  • 关键词搜索:按关键词搜索相关帖子
  • 指定帖子采集:按帖子 ID 或链接采集指定内容
  • 评论采集:支持一级评论和二级评论(默认不开启评论采集,需要手动开启)
  • 创作者主页:采集指定创作者发布的内容
  • 登录态缓存:登录一次后可以复用,减少重复扫码
  • 代理池支持:可以在配置中使用 IP 代理池
  • 评论词云图:可以生成评论词云图,用于快速了解讨论热点
  • 媒体下载:可以下载封面、视频和图文图片(默认关闭)
  • WebUI 界面:提供可视化操作界面,不用全程敲命令行
  • 多种存储格式:支持 CSV、JSON、JSONL、Excel、SQLite、MySQL

支持的平台

平台 关键词搜索 指定帖子 二级评论 创作者主页 登录态缓存 词云图
小红书 ✅ ✅ ✅ ✅ ✅ ✅
抖音 ✅ ✅ ✅ ✅ ✅ ✅
快手 ✅ ✅ ✅ ✅ ✅ ✅
B 站 ✅ ✅ ✅ ✅ ✅ ✅
微博 ✅ ✅ ✅ ✅ ✅ ✅
贴吧 ✅ ✅ ✅ ✅ ✅ ✅
知乎 ✅ ✅ ✅ ✅ ✅ ✅

媒体下载支持小红书、抖音、快手、B 站、微博;贴吧和知乎的数据结构中没有媒体字段,暂不支持媒体下载。

技术原理:为什么门槛相对低

很多自媒体平台的接口都有签名和加密,直接逆向非常麻烦。MediaCrawler 换了一个思路:

  1. 基于 Playwright 做浏览器自动化;
  2. 复用已经登录的浏览器上下文和登录态;
  3. 通过 JS 表达式获取所需的签名参数。

也就是说,它不去硬啃各家的加密算法,而是借助真实浏览器的登录状态完成采集。这也是它上手相对容易、又能覆盖多个平台的关键原因。

代价也很明显:它依赖登录态和平台页面结构,平台一旦改版或加强风控,采集就可能失效,需要等项目更新或自己调整。这类工具从来不是“一劳永逸”的。

安装部署

1. 准备环境

  • uv(推荐的 Python 包管理工具)
  • Node.js ≥ 16(抖音、知乎等平台需要)
  • Chrome 浏览器 ≥ 144(使用 CDP 模式时推荐)
  • Python:以仓库 pyproject.toml 为准,官方示例使用 Python 3.11

先验证 uv 是否装好:

uv --version

2. 下载项目并安装依赖

git clone https://github.com/NanmiCoder/MediaCrawler.git
cd MediaCrawler
uv sync

uv sync 会按仓库的锁定文件对齐 Python 版本和依赖,比直接 pip install 更稳定。

如果不使用 Chrome CDP 模式,而是使用标准 Playwright 模式,还需要安装浏览器驱动:

uv run playwright install

3. 选择登录方式

项目默认使用 CDP 模式连接你已有的 Chrome 浏览器,可以复用浏览器已有的登录状态和 Cookie:

  1. 在 Chrome 地址栏输入 chrome://inspect/#remote-debugging;
  2. 勾选“Allow remote debugging for this browser instance”;
  3. 页面显示 Server running at: 127.0.0.1:9222 即表示已就绪;
  4. 运行爬虫后,Chrome 会弹出确认对话框,60 秒内点“接受”即可。

如果不想用 CDP 模式,可以在 config/base_config.py 中设置:

ENABLE_CDP_MODE = False

切换为标准 Playwright 模式。

使用方法

1. 先改配置文件

主要配置都在 config/base_config.py,里面有中文注释,包括:

  • 爬取平台
  • 关键词或指定帖子 ID 列表
  • 是否爬评论:ENABLE_GET_COMMENTS
  • 是否下载媒体:ENABLE_GET_MEDIA
  • 数据保存路径和格式

注意:项目默认不开启评论爬取模式,需要评论时要先把 ENABLE_GET_COMMENTS 改为开启;媒体下载默认也是关闭的。

2. 命令行使用

关键词搜索(以小红书为例,扫码登录):

uv run main.py --platform xhs --lt qrcode --type search

采集指定帖子:

uv run main.py --platform xhs --lt qrcode --type detail

查看所有平台和参数:

uv run main.py --help

--platform 后接平台代码,--type 区分搜索和指定帖子两种模式,具体可选值以 main.py --help 的输出为准。

3. 下载媒体(可选)

命令行方式:

uv run main.py --platform xhs --type detail --specified_id <帖子URL或ID> --get_media true

也可以在配置文件中设置 ENABLE_GET_MEDIA = True。

媒体默认按帖子聚合存放,例如:

data/xhs/media/{帖子ID}/
├── cover.jpg
├── video.mp4
└── 001.jpg

B 站视频默认走 DASH 路径,需要先安装 ffmpeg 才能拿到最高画质并合流;未安装时会自动降级为 mp4 直链。

4. WebUI 使用(不想敲命令时)

开发调试模式(推荐):

开两个终端,第一个起后端 API 服务:

uv run uvicorn api.main:app --port 8080 --reload

第二个进前端目录:

cd webui
npm install
npm run dev

然后打开 http://localhost:5173/ 即可使用。前端会把 /api 代理到 8080 的后端。首次打开会做环境检测(调用 /api/env/check),前提是后端已经启动;如果检测失败,可以点“跳过检测”临时进入。

WebUI 里可以做到:

  • 可视化配置平台、登录方式、爬取类型等参数
  • 实时查看运行状态和日志
  • 预览和导出数据

只部署一次的生产模式:

cd webui
npm install
npm run build

构建产物会输出到 api/webui/,之后只需启动后端服务,打开 http://localhost:8080 即可。

5. 数据保存在哪里

默认情况下,数据落在项目下的 data/ 目录,支持 CSV、JSON、JSONL、Excel、SQLite、MySQL 等格式。媒体下载失败只会记录日志,不会中断整个爬取流程;已经下载过的文件会被跳过,需要重新下载时删除对应目录即可。

使用注意事项

这部分比安装步骤更重要,建议使用前先看完:

  1. 只做学习和研究用途:作者已明确禁止商业用途和非法用途,不要把采集到的数据直接商用、转卖或用于侵犯他人权益的场景。
  2. 只采公开内容:不要碰隐私信息、非公开内容和需要绕过付费墙的内容;转载他人内容时注意版权和出处。
  3. 不要用主号:项目走的是登录态,频率过高、量过大都可能触发平台风控,影响的是登录的那个账号。建议用不重要的账号、低频、小规模使用。
  4. 不要大规模爬取:限速、限量、按需采集;不要用它去冲击平台服务器,也不要把它当成稳定的生产采集服务。
  5. 平台会变,工具会失效:签名、页面结构、风控策略都可能随时调整,某天突然爬不动是正常现象,需要看项目更新和 Issue 区的反馈。
  6. 开源版有边界:开源版以单账号、小规模使用为主;断点续爬、多账号加代理池等更偏生产化的能力属于官方另行提供的 Pro 版本,评估前先分清自己到底需要哪一档。

适合谁,不适合谁

适合:

  • 想研究某个话题在多个平台上的讨论和评论趋势的人
  • 想做内容选题参考、舆情观察、公开数据整理的人
  • 想学习 Playwright、登录态复用、多平台爬虫架构的开发者

不适合:

  • 想批量搬运、洗稿、直接商用他人内容的人
  • 需要 7×24 小时稳定、大规模采集的生产系统(这需要另外的架构、合规评估和运维投入)
  • 不想折腾环境、遇到平台改版就希望“永远能用”的人

结语

MediaCrawler 的价值不在于“能爬”,而在于把多个平台的采集、登录态复用、结构化存储和 WebUI 操作打包成了一个现成的起点,省去了重复造轮子的时间。但它同时也把责任交给了使用者:采什么、采多少、怎么用,都需要自己把握分寸。

如果你只是偶尔查一个话题,先用公开搜索和手动整理就够了;如果你确实有持续的多平台研究需求,再按上面的步骤在本地小规模试跑一次,看数据质量和稳定性是否符合预期,再决定要不要长期使用。

正文完
 0
评论(没有评论)