MediaCrawler:多平台社交媒体数据爬虫工具
原标题:NanmiCoder/MediaCrawler
Python★ 52,598 stars+347 今日
速览
该项目支持对多个热门社交平台的内容进行结构化抓取,覆盖从短视频到图文帖子的多种媒体形式。它适用于需要进行社交媒体舆情监控、竞品分析或构建垂直领域数据集的研究人员与开发者。
AI 深度解读
这是什么
MediaCrawler 是一个基于 Python 开发的多平台自媒体数据采集工具,在 GitHub 上拥有极高的关注度(Stars 52598+)。该项目主要支持小红书、抖音、快手、B站、微博、贴吧、知乎等主流社交平台的公开信息抓取。
与传统的爬虫项目不同,MediaCrawler 的核心设计理念是“去逆向化”。它不依赖复杂的 JS 逆向工程来破解加密签名,而是利用 Playwright 浏览器自动化框架,通过保留用户登录态的浏览器上下文环境,直接获取签名参数。这种设计大幅降低了爬虫技术的学习门槛,使得开发者能够专注于数据逻辑本身,而非底层的加密算法破解。
解决的问题
- JS 逆向门槛高:传统爬虫在面对抖音、小红书等平台的反爬机制时,往往需要深入分析复杂的 JavaScript 加密逻辑(如签名算法、Token 生成),这对开发者的前端逆向能力要求极高。MediaCrawler 通过浏览器自动化模拟真实用户行为,规避了直接逆向加密算法的需求。
- 登录态管理复杂:多平台爬虫最大的痛点之一是维持有效的 Session/Cookie。该项目通过 Playwright 的 CDP(Chrome DevTools Protocol)模式或标准模式,实现了登录态的持久化保存和复用,解决了频繁登录失效的问题。
- 风控检测严格:主流自媒体平台拥有强大的反爬虫风控系统。MediaCrawler 通过复用用户已有的 Chrome 浏览器环境(包括 Cookie、扩展、指纹等),模拟真实人类操作,显著降低了被平台识别为机器流量并封禁的风险。
核心功能
- 多平台支持:覆盖小红书 (xhs)、抖音 (dy)、快手 (ks)、B站 (bili)、微博 (wb)、贴吧 (tieba)、知乎 (zhihu) 等主流内容社区。
- 数据采集类型:
- 搜索爬取:根据关键词搜索相关帖子,抓取帖子详情及评论信息。
- 详情爬取:通过指定的帖子 ID 列表,精准获取特定帖子的信息与评论。
- 评论分析:支持抓取帖子下的评论数据,为后续的情感分析或用户画像提供数据基础。
- 数据存储多样化:支持将采集到的数据导出为 CSV、JSON、JSONL、Excel、SQLite 以及 MySQL 数据库,满足不同场景下的数据持久化需求。
- WebUI 可视化界面:提供基于 Web 的可视化操作界面,用户无需记忆复杂的命令行参数,即可通过图形界面配置爬虫参数(平台、登录方式、爬取类型等),实时查看运行状态和日志,并预览导出数据。
- 登录机制灵活:
- CDP 模式(推荐):连接本地已安装的 Chrome 浏览器,复用现有的登录状态和 Cookie。
- 标准 Playwright 模式:由程序自动启动浏览器实例进行登录(如扫码登录)。
亮点 / 与同类相比
- 无需 JS 逆向,技术门槛低:这是该项目最大的亮点。通过 Playwright 保留登录态并利用 JS 表达式获取签名,避免了繁琐且易失效的逆向工程工作,适合大多数 Python 开发者快速上手。
- CDP 模式降低风控风险:默认使用 CDP 模式连接用户本地的 Chrome 浏览器,能够完美继承浏览器的指纹、扩展和历史登录状态,比单纯使用无头浏览器(Headless Browser)更难被平台风控系统检测。
- 现代化的工程实践:
- 推荐使用
uv作为 Python 包管理工具,利用其极速的依赖解析和安装能力,提升开发体验。 - 代码结构清晰,配置文件
config/base_config.py中包含详细的中文注释,便于理解和二次开发。
- 推荐使用
- Pro 版本的进阶特性:虽然开源版功能已相当强大,但官方推出的 MediaCrawlerPro 版本提供了断点续爬、多账号+IP 代理池支持、去除 Playwright 依赖(更轻量)、企业级代码重构以及 AI Agent 集成(如 OpenClaw、Claude Code 支持)等高级功能,适合大规模生产环境使用。
适合谁用 / 上手
适合人群:
- 数据分析师/研究员:需要获取社交媒体公开数据进行舆情分析、用户行为研究或市场调研,但不具备深厚的前端逆向能力。
- Python 开发者:希望学习现代爬虫架构设计、Playwright 自动化测试/爬虫应用,以及如何处理登录态和反爬策略的开发者。
- 全栈学习者:通过参考 WebUI 的实现和数据存储方案,学习前后端分离架构及数据可视化展示。
上手指南:
-
环境准备:
- 安装 Python 3.11(推荐)或更高版本。
- 安装 uv(目前最快的 Python 包管理工具),用于依赖管理。
- 安装 Node.js(版本 >= 16.0.0),部分平台(如抖音、知乎)依赖 Node 环境。
- 安装最新版 Chrome 浏览器(版本 >= 144),并开启远程调试功能(
chrome://inspect/#remote-debugging)。
-
项目部署:
cd MediaCrawler # 使用 uv 同步依赖,确保环境一致性 uv sync # 如果需要使用标准 Playwright 模式,需安装浏览器驱动 # uv run playwright install -
运行示例:
- 搜索模式(从配置文件读取关键词搜索帖子及评论):
uv run main.py --platform xhs --lt qrcode --type search - 详情模式(获取指定帖子 ID 的信息及评论):
uv run main.py --platform xhs --lt qrcode --type detail - 启动 WebUI:
启动后访问uv run uvicorn api.main:app --port 8080 --reloadhttp://localhost:8080即可通过图形界面操作。
- 搜索模式(从配置文件读取关键词搜索帖子及评论):
注意事项:
- 本项目仅限学习和研究使用,严禁用于商业用途或非法入侵他人系统。
- 使用 CDP 模式时,首次运行需在本地 Chrome 浏览器中确认连接,程序会等待 60 秒供用户操作。
- 请严格遵守《中华人民共和国网络安全法》等相关法律法规,尊重平台规则,不得对平台进行大规模恶意爬取。
查看原文 →github.com
