1. MediaCrawler 是什么?

MediaCrawler 是目前最全面的中文社交媒体开源爬虫工具,GitHub 星标超过 64,000,由开发者 NanmiCoder 维护。它基于 Python + Playwright 浏览器自动化框架,通过保留登录态的方式直接调用平台 API,无需逆向复杂的 JS 加密算法,大幅降低了技术门槛。

核心定位:面向数据分析师、舆情研究人员和内容运营者的学习工具,支持一键采集 7 大中文社交平台的公开内容数据。

Crawl4AI 这类通用网页爬虫不同,MediaCrawler 专注于中文社交媒体平台,内置了各平台的签名逻辑和数据解析规则,开箱即用。如果你需要采集海外平台数据,可以看看 Wiseflow 深度解析

2. 支持的 7 大平台与功能矩阵

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

七个平台的功能支持完全一致——这是 MediaCrawler 最大的架构优势:统一的接口设计,切换平台只需改一个参数。

3. 技术架构解析

MediaCrawler 的技术栈设计围绕「降低反检测风险」展开:

┌─────────────────────────────────────────────┐
│              MediaCrawler 架构               │
├─────────────────────────────────────────────┤
│  用户层    CLI 命令行 / WebUI 可视化界面       │
├─────────────────────────────────────────────┤
│  调度层    平台调度器 → 统一爬虫接口           │
├─────────────────────────────────────────────┤
│  执行层    Playwright (CDP 模式)              │
│           ├─ 登录态管理 (QR/Phone/Cookie)    │
│           ├─ JS 签名计算 (复用浏览器上下文)    │
│           └─ 反检测 (真实浏览器指纹)           │
├─────────────────────────────────────────────┤
│  数据层    CSV / JSON / JSONL / Excel         │
│           SQLite / MySQL / PostgreSQL         │
└─────────────────────────────────────────────┘

核心技术原理

  1. CDP 模式(推荐):通过 Chrome DevTools Protocol 连接用户已有的 Chrome 浏览器,复用真实浏览器的 Cookie、扩展和浏览历史,反检测效果最佳
  2. 签名复用:利用保留登录态的浏览器上下文环境,通过 JS 表达式直接获取平台签名参数,无需逆向加密算法
  3. 登录态缓存:首次扫码登录后保存 Cookie,后续运行自动复用,避免重复登录

4. 安装与快速上手

4.1 环境准备

# 1. 安装 uv(推荐的 Python 包管理器)
curl -LsSf https://astral.sh/uv/install.sh | sh

# 2. 确认 Node.js >= 16(抖音和知乎签名需要)
node --version

# 3. 克隆项目
git clone https://github.com/NanmiCoder/MediaCrawler.git
cd MediaCrawler

# 4. 安装依赖(uv 自动处理 Python 版本和依赖)
uv sync

4.2 Chrome 浏览器配置(CDP 模式)

MediaCrawler 默认使用 CDP 模式,需要配置 Chrome:

  1. 安装 Chrome >= 144
  2. 地址栏输入 chrome://inspect/#remote-debugging
  3. 勾选 "Allow remote debugging for this browser instance"
  4. 确认显示 Server running at: 127.0.0.1:9222

如果不想用 CDP 模式,在 config/base_config.py 中设置 ENABLE_CDP_MODE = False

4.3 首次运行

# 小红书关键词搜索(默认爬取 15 条笔记)
uv run main.py --platform xhs --lt qrcode --type search

# 首次运行会弹出二维码,用小红书 APP 扫码登录
# 登录态自动缓存,后续无需重复扫码

5. 核心配置详解

config/base_config.py 是关键配置文件,以下是常用配置项:

# 目标平台:xhs | dy | ks | bili | wb | tieba | zhihu
PLATFORM = "xhs"

# 搜索关键词(英文逗号分隔)
KEYWORDS = "Python教程,编程副业,AI工具推荐"

# 登录方式:qrcode(扫码)| phone(手机)| cookie(手动填)
LOGIN_TYPE = "qrcode"

# 爬取类型:search(关键词搜索)| detail(指定帖子)| creator(创作者主页)
CRAWLER_TYPE = "search"

# 数据存储格式:csv | db | json | jsonl | sqlite | excel | postgres
SAVE_DATA_OPTION = "jsonl"

# 每个关键词最大爬取笔记数
CRAWLER_MAX_NOTES_COUNT = 15

# 并发数(建议保持 1,避免触发风控)
MAX_CONCURRENCY_NUM = 1

# 是否开启评论爬取
ENABLE_GET_COMMENTS = True

# 是否开启二级评论
ENABLE_GET_SUB_COMMENTS = False

# IP 代理配置
ENABLE_IP_PROXY = False
IP_PROXY_PROVIDER_NAME = "kuaidaili"

6. 各平台采集实战

6.1 小红书采集

# 关键词搜索笔记
uv run main.py --platform xhs --lt qrcode --type search

# 指定笔记 ID 爬取详情
uv run main.py --platform xhs --lt qrcode --type detail

# 爬取创作者主页所有笔记
uv run main.py --platform xhs --lt qrcode --type creator

小红书数据字段包括:笔记标题、正文内容、图片列表、点赞数、收藏数、评论数、作者信息、发布时间等。

6.2 抖音采集

# 搜索视频
uv run main.py --platform dy --lt qrcode --type search

# 指定视频 ID
uv run main.py --platform dy --lt qrcode --type detail

抖音采集需要 Node.js 环境用于签名计算,数据字段包括视频标题、播放地址、封面图、点赞数、评论数、分享数等。

6.3 B 站采集

# 搜索视频
uv run main.py --platform bili --lt qrcode --type search

# 指定视频(BV 号)
uv run main.py --platform bili --lt qrcode --type detail

B 站数据包含:视频标题、BV 号、播放量、弹幕数、点赞投币收藏数、UP 主信息等。

6.4 微博 / 贴吧 / 知乎 / 快手

# 微博
uv run main.py --platform wb --lt qrcode --type search

# 百度贴吧
uv run main.py --platform tieba --lt qrcode --type search

# 知乎
uv run main.py --platform zhihu --lt qrcode --type search

# 快手
uv run main.py --platform ks --lt qrcode --type search

所有平台命令格式一致,只需替换 --platform 参数。

7. 数据存储与导出

MediaCrawler 支持 7 种数据存储格式,数据默认保存在 data/ 目录下:

格式 适用场景 特点
JSONL 日常采集(默认) 逐行写入,断点续采友好
CSV Excel 分析 表格软件直接打开
JSON 程序对接 标准格式,嵌套结构
Excel 报告输出 带格式的电子表格
SQLite 本地数据库 轻量查询,无需额外服务
MySQL 生产环境 支持去重,适合大规模数据
PostgreSQL 企业级 完整的关系型数据库支持
# 切换到 MySQL 存储
SAVE_DATA_OPTION = "db"

# 在 db_config.py 中配置连接信息
DB_HOST = "localhost"
DB_PORT = 3306
DB_USER = "root"
DB_PASSWORD = "your_password"
DB_NAME = "media_crawler"

8. 高级用法

8.1 WebUI 可视化操作

# 终端 1:启动后端 API
uv run uvicorn api.main:app --port 8080 --reload

# 终端 2:启动前端(开发模式)
cd webui && npm install && npm run dev
# 访问 http://localhost:5173/

# 或者构建生产版本
cd webui && npm install && npm run build
# 只需启动 API 服务器,访问 http://localhost:8080

WebUI 提供可视化配置界面,无需命令行即可操作爬虫。

8.2 IP 代理池配置

大规模采集时建议启用代理池:

ENABLE_IP_PROXY = True
IP_PROXY_POOL_COUNT = 2
IP_PROXY_PROVIDER_NAME = "kuaidaili"  # 支持 kuaidaili | wandouhttp | static

# 静态代理配置
IP_PROXY_PROVIDER_NAME = "static"
STATIC_PROXY_URL = "http://user:password@your_proxy:port"

8.3 并发与频率控制

# 并发数(谨慎设置,过高易触发风控)
MAX_CONCURRENCY_NUM = 1

# 每个关键词最大采集数
CRAWLER_MAX_NOTES_COUNT = 50

# 翻页起始位置
START_PAGE = 1

8.4 评论词云生成

MediaCrawler 内置评论词云功能,可自动生成可视化词云图:

# 在 base_config.py 中开启
# 需要先安装 wordcloud 等依赖
ENABLE_WORD_CLOUD = True

9. 合规性与法律风险提示

重要提醒:使用 MediaCrawler 前请务必了解以下风险:

  1. 法律合规:遵守《网络安全法》《数据安全法》《个人信息保护法》,不得用于商业用途
  2. 平台规则:尊重各平台 robots.txt 和用户协议,避免大规模爬取
  3. 频率控制:合理控制请求频率,不要给平台造成负担
  4. 数据用途:仅限学习和研究目的,不得用于非法用途
  5. 隐私保护:不得爬取和传播他人个人隐私信息

参考:爬虫违法违规案件合集

10. 与其他工具对比

特性 MediaCrawler Snscrape Tweepy 自建爬虫
目标平台 7 大中文平台 Twitter/X Twitter/X 任意平台
反检测 CDP 真实浏览器 API 官方 需自行实现
登录管理 扫码/手机/Cookie 无需 OAuth 手动实现
数据存储 7 种格式 命令行输出 JSON 自行实现
上手难度 低(配置即用)
评论抓取 ✅ 含二级评论 需开发
维护状态 活跃(64K+ Stars) 停滞 活跃 取决于自己

如果你需要通用网页爬取能力,推荐 Crawl4AI;如果需要信息流监控和 AI 摘要,推荐 Wiseflow。MediaCrawler 的独特价值在于对中文社交媒体的深度适配。

11. 常见问题 FAQ

MediaCrawler 支持哪些 Python 版本?

推荐使用 Python 3.11,这是项目依赖包的主要测试版本。使用 uv 安装时会自动匹配正确的 Python 版本。

扫码登录失败怎么办?

如果使用 CDP 模式,确保 Chrome 版本 >= 144 且已开启远程调试。如果反复要求扫码,关闭浏览器后重新开启远程调试。也可以尝试切换到 HEADLESS = False 手动通过滑动验证。

可以同时在多个平台爬取吗?

可以,但建议串行执行。每次运行指定一个 --platform 参数,完成后再切换下一个平台。并发多平台容易触发风控。

数据存储在哪里?

默认保存在项目根目录的 data/ 文件夹下,按平台名分子目录。可以通过 SAVE_DATA_PATH 自定义存储路径。

MediaCrawler 可以商用吗?

不可以。项目采用非商业学习许可证(NON-COMMERCIAL LEARNING LICENSE 1.1),明确禁止商业用途。如需商用,请联系作者获取授权。

12. 总结

MediaCrawler 是目前最完善的中文社交媒体数据采集开源工具,64,000+ GitHub Stars 证明了它的实用价值。它的核心优势在于:

  • 覆盖面广:7 大平台统一接口,切换零成本
  • 反检测强:CDP 模式复用真实浏览器环境
  • 上手简单:uv 一键安装,配置即用
  • 存储灵活:7 种数据格式适配不同场景
  • 社区活跃:持续更新,问题响应快

对于数据分析师、舆情研究人员和内容运营者来说,MediaCrawler 是学习社交媒体数据采集技术的最佳起点。但请务必在合法合规的前提下使用,尊重平台规则和用户隐私。