RepoDaily · 2026-07-28 · Developer tool / CLI

MediaCrawler:基于 Playwright 登录态的多平台自媒体爬虫学习工具

#12 Developer tool / CLI Python +349 NanmiCoder/MediaCrawler 打开仓库

开源 Python 爬虫,覆盖小红书、抖音、快手、B 站、微博、贴吧、知乎七大平台,利用 Playwright 持久化登录态绕过 JS 逆向。非商业学习许可证,禁止商用。

项目类型Developer tool / CLI
最适合希望学习浏览器自动化爬虫架构和登录态数据采集的开发者,以学习研究为目的
风险等级高——自定义非商业许可证、平台爬虫法律合规风险、登录态自动化在平台改版时易失效
评估时间2-4 小时即可完成 uv 安装、依赖同步、Playwright 浏览器安装并运行单平台搜索爬取

核心问题: 非商业学习许可证与 Playwright 登录态方案是否适合你的数据采集学习目标,且不触碰法律或平台条款红线?

83/100

RepoDaily 采用评分

RepoDaily 将该项目的采用分评为 83/100(强):分数来自文章来源、安装路径、生产风险、差异化、许可证清晰度以及 AI/Agent 适配度。

基于 RepoDaily 来源和采用说明的方向性评分,不是基准测试。风险: 高
100证据质量

包含 5 个来源、覆盖 4 类来源;如有 RepoDaily 独有模块,会进一步提高证据分。

100可安装/可试用性

检测到 6 个工作流步骤、6 个下一步动作,以及 3 个命令/安装信号。

52维护可信度

趋势热度为 +349 stars;如内容中有 release、issue 或维护信号,会提高维护可信度。

77生产准备度

采纳风险标记为 high,并包含 5 条安全说明与 5 条跳过条件。

97差异化

2 个机会视角、4 个替代方案,以及 3 个类型化模块支撑差异化判断。

82许可证清晰度

文章中包含许可证来源或许可证表述。

66Agent / AI 适配度

文章正文和元数据中检测到 3 个 AI/Agent 相关信号。

项目概览

MediaCrawler 是一个 Python 爬虫项目,可抓取七大主流中国社交平台的公开帖子和评论:小红书、抖音、快手、B 站、微博、百度贴吧和知乎。仓库明确声明仅用于学习和研究,README 顶部放置醒目的免责声明,禁止商业用途和大规模爬取。在本期趋势周期内获得 349 颗星,排名 2026-07-28 趋势榜第 12 位。

项目的技术原理与许多逆向爬虫不同。MediaCrawler 不破解平台的签名加密算法,而是通过 Playwright 浏览器自动化维持已登录的浏览器上下文,然后在该上下文中执行 JS 表达式获取签名参数。这种方式省去了逆向加密算法的门槛,但引入了对完整浏览器环境和有效登录会话的依赖。

所有支持平台的功能矩阵完全一致:关键词搜索、指定帖子 ID 爬取、二级评论获取、指定创作者主页爬取、登录态缓存、IP 代理池和评论词云图生成。平台间的功能对等是项目持续受关注的原因之一——开发者学会小红书适配器后,可以快速迁移到抖音或知乎。

项目还有一个商业版本 MediaCrawlerPro,在 README 中推广。Pro 版新增断点续爬、多账号支持、完整 Linux 环境支持、去除 Playwright 依赖以及自媒体内容拆解 AI Agent。本文聚焦开源版本,但读者应知晓存在付费层级。

解决什么问题

  • 爬取中国社交平台通常需要逆向签名算法,要求深厚的 JS 功底,且平台更新后频繁失效。
  • 登录态管理脆弱——二维码登录会话会过期,手动处理 Cookie 或指纹检测容易出错。
  • 大多数开源爬虫只针对单一平台,开发者需要维护多个互不兼容的代码库。
  • 将爬取数据存入结构化格式(CSV、JSON、SQLite、MySQL)以供后续分析,通常需要额外编写胶水代码。
  • 评论分析流水线(词云、嵌套回复)通常需要初学者难以快速实现的代码。

工作原理

  1. 安装 uv,然后在项目根目录运行 `uv sync`,复现 pyproject.toml 中声明的 Python 3.11 环境。
  2. 运行 `uv run playwright install` 下载爬虫依赖的 Playwright 浏览器驱动。
  3. 如果需要爬取抖音或知乎,安装 Node.js(>= 16.0.0),因为这些平台需要通过 Node 执行 JS。
  4. 编辑 `config/base_config.py`,启用 `ENABLE_GET_COMMENTS` 等功能开关,配置登录类型和代理或存储选项。
  5. 运行爬取命令,例如 `uv run main.py --platform xhs --lt qrcode --type search`,通过二维码登录并搜索小红书帖子。
  6. 通过参数选择存储后端:`--save_data_option sqlite` 使用轻量 SQLite,`--save_data_option db` 使用 MySQL。

产品演示与界面预览

WebUI 界面预览
WebUI 界面预览 — 项目的 WebUI 提供了可视化入口,无需编辑命令行参数即可选择平台和配置爬取参数。 README.md image

命令行接口与配置入口

  • 入口命令:`uv run main.py --platform <平台> --lt <登录方式> --type <爬取类型>`(如 `--platform xhs --lt qrcode --type search`)。
  • 支持的 `--platform` 值:xhs(小红书)、dy(抖音)、ks(快手)、bili(B 站)、wb(微博)、tieba(贴吧)、zh(知乎)。
  • 爬取类型:`search`(从配置读取关键词搜索)和 `detail`(从配置读取指定帖子 ID 列表)。
  • 登录方式包括二维码登录(`--lt qrcode`);文档说明 xhs 和 dy 还支持通过 `config/base_config.py` 配置 CDP 连接本地 Chrome。
  • 存储参数:`--save_data_option sqlite`(SQLite,推荐个人用户)、`--save_data_option db`(MySQL),或默认输出 CSV/JSON 到 `data/` 目录。
  • 数据库初始化:首次使用前运行 `--init_db sqlite` 或 `--init_db mysql`。
  • 功能开关如 `ENABLE_GET_COMMENTS` 位于 `config/base_config.py`,附有中文注释。
  • 运行 `uv run main.py --help` 查看完整参数列表。

集成面:依赖与存储后端

pyproject.toml 声明 Python >= 3.11 为硬性要求,并锁定关键依赖:playwright >= 1.61.0、fastapi 0.110.2、sqlalchemy >= 2.0.43、pandas 2.2.3、httpx 0.28.1、redis ~4.6.0、aiomysql 0.2.0、motor >= 3.3.0(MongoDB 异步驱动)、asyncpg >= 0.31.0,以及用于中文分词的 jieba 0.42.1。此外还引入 alembic 做数据库迁移、typer 做 CLI 解析、tenacity 做重试逻辑。

存储选项有明确文档:CSV 和 JSON 文件写入 `data/` 目录,SQLite 推荐个人用户使用,MySQL 需要预先创建数据库。依赖中出现 MongoDB 的 motor 驱动和 asyncpg,暗示比文档列出的更广泛的数据库兼容性,但文档已测试的路径为 CSV、JSON、SQLite 和 MySQL。

维护风险:许可证、平台波动与法律风险

  • 许可证为 'NON-COMMERCIAL LEARNING LICENSE 1.1'——非 OSI 认证。商业用途需版权所有者(relakkes@gmail.com)书面同意,这对大多数组织采用是硬性阻碍。
  • README 带有醒目免责声明,要求用户仅以学习为目的使用,并链接到一个中国爬虫违法案例仓库作为警示。
  • 平台 API 和签名机制会无预警变更;Playwright 登录态方案虽降低了逆向工作量,但仍依赖 DOM 选择器和 JS 表达式路径,平台改版时可能失效。
  • pyproject.toml 中版本号为 0.1.0,表明处于 1.0 之前的阶段,可能出现破坏性变更。
  • 付费 Pro 版本拥有开源版缺少的功能(多账号、完整 Linux 支持、无 Playwright 依赖),这可能意味着开源版获得的更新投入相对较少。

谁适合关注

适合关注

  • 学习和研究中国社交平台浏览器自动化爬虫设计的学生和个人开发者。
  • 需要小规模、非商业数据样本并通过伦理审查的学术研究者。
  • 想评估 Playwright 登录态方案与 JS 逆向方案差异的工程师。
  • 需要多平台爬虫参考实现、支持可插拔存储后端(CSV、JSON、SQLite、MySQL)的开发者。

可以先跳过

  • 任何商业产品或服务——许可证明确禁止未经书面同意的商用。
  • 需要 SLA 或稳定性保证的团队——平台变更随时可能导致爬虫失效。
  • 需要 OSI 认证许可证(MIT、Apache-2.0)以满足合规或再分发要求的项目。
  • 不涉及小红书、抖音等中国平台的中国境外用户。
  • 不愿意管理二维码登录流程、浏览器驱动安装和 Node.js 侧依赖的用户。

风险与注意事项

非商业学习许可证、法律免责声明以及对平台特定登录和 DOM 结构的脆弱依赖,使该项目不适合在未经充分法律和工程审查的情况下用于生产或商业场景。

  • NON-COMMERCIAL LEARNING LICENSE 1.1 禁止未经书面同意的商用——对企业是硬性阻碍。
  • 中国平台的服务条款限制自动化数据采集;README 自身链接了爬虫违法案例库。
  • 基于 Playwright 的登录和 JS 表达式参数提取在平台前端更新时可能失效。
  • 版本号 0.1.0,无 semver 稳定性保证。
  • 抖音和知乎需要 Node.js >= 16,增加了这两个平台的部署复杂度。
  • 项目需要通过二维码或 Cookie 登录获取各平台有效登录凭据——不要使用共享或生产环境账号。
  • 支持 IP 代理池功能,但使用前应审计代理配置和日志行为。
  • 非商业许可证声明软件按 '现状' 提供,不提供任何形式的保证。
  • 依赖包括 cryptography >= 45.0.7 和 websockets >= 15.0.1;需审查传递依赖的供应链风险。
  • README 未提及限流保护措施——开发者需自行实现,避免 IP 封禁或平台处罚。

替代方案比较

方案适用场景代价
Scrapy
需要成熟、MIT 许可、社区广泛支持且无平台特定法律限制的爬虫框架时。免费 / BSD-3-Clause
希望完全控制浏览器自动化而不依赖第三方爬虫封装时。免费 / Apache-2.0
MediaCrawlerPro
需要多账号支持、Linux 部署、断点续爬和 AI Agent 功能,且愿意订阅付费时。付费订阅
官方平台 API
商业产品需要合规、稳定地访问平台数据时。因平台而异

这个趋势说明了什么

登录态爬虫架构学习参考

代码库展示了 Playwright 持久化浏览器上下文如何替代 JS 逆向。为自有平台构建合规爬虫的开发者可研究其适配器模式和存储抽象。

克隆仓库,运行 `uv sync`,追踪 xhs 平台适配器,查看登录态、JS 表达式签名和 API 请求如何串联。

中文 NLP 流水线教学素材

内置 jieba 分词和词云生成提供了从原始评论到可视化文本分析的完整闭环,适合课程作业或原型开发。

运行评论爬取 `--save_data_option sqlite`,然后在 data 目录查看词云输出。

下一步建议

安装依赖并运行小红书单平台搜索爬取

评估 MediaCrawler 最快的方式是复现文档中的快速启动路径,小红书不需要 Node.js 依赖。

  1. 从 uv 官方安装页面安装 uv,用 `uv --version` 验证。
  2. 克隆仓库并在根目录运行 `uv sync`。
  3. 运行 `uv run playwright install` 下载浏览器驱动。
  4. 查看 `config/base_config.py`,按需调整关键词或功能开关。
  5. 执行 `uv run main.py --platform xhs --lt qrcode --type search --save_data_option sqlite`。
  6. 检查 `data/` 目录输出,确认 SQLite schema 符合预期。

RepoDaily 判断

MediaCrawler 是一个技术上有意思、文档完善的学习工具,帮助理解 Playwright 登录态持久化如何绕过 JS 逆向来采集中国社交平台数据。但其非商业许可证、法律免责声明和平台波动风险使其严格定位为学习与参考项目——不适合作为生产数据管道的基础。

信息来源