项目概述

一个功能强大的多平台自媒体数据采集工具,让数据获取变得简单高效

🎯

多平台支持

支持小红书、抖音、快手、B站、微博、贴吧、知乎等7个主流自媒体平台的数据采集,一个工具解决所有需求。

🛠️

技术先进

基于 Playwright 浏览器自动化框架,利用保留登录态的浏览器上下文环境,无需逆向复杂的加密算法。

📊

数据丰富

支持关键词搜索、指定帖子爬取、二级评论、创作者主页数据等多种数据采集模式,满足不同场景需求。

🔒

登录态缓存

智能保存登录状态,避免频繁登录验证,提高采集效率和稳定性。

🌐

IP代理池

内置IP代理池支持,有效避免IP封禁问题,确保长时间稳定运行。

☁️

词云生成

自动生成评论词云图,直观展示热门话题和用户关注点,便于数据分析。

平台功能支持

全面支持主流自媒体平台的各项数据采集功能

功能支持一览表

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

核心优势

相比传统爬虫方案,MediaCrawler 具有显著的技术优势

❌ 传统爬虫方案

技术门槛 需要JS逆向工程
维护成本 算法更新需重新逆向
稳定性 容易被反爬虫检测
开发效率 开发周期长
平台支持 单平台开发

✅ MediaCrawler

技术门槛 无需JS逆向,开箱即用
维护成本 自动适应平台更新
稳定性 模拟真实浏览器行为
开发效率 快速部署,即时使用
平台支持 7大平台统一接口
🚀

零逆向工程

利用 Playwright 保持登录态,通过 JS 表达式直接获取签名参数,无需复杂的算法逆向。

🔄

自动适应更新

基于浏览器环境运行,平台算法更新时无需修改代码,自动适应变化。

高效并发

异步架构设计,支持多任务并发执行,大幅提升数据采集效率。

🛡️

反检测机制

模拟真实用户行为,内置多种反检测策略,有效降低被封禁风险。

技术架构

基于现代化技术栈,提供稳定可靠的数据采集解决方案

🎭

Playwright 核心

基于 Microsoft 开发的 Playwright 浏览器自动化框架,提供强大的页面控制能力和反检测机制。

🐍

Python 生态

使用 Python 3.9+ 开发,充分利用丰富的第三方库生态,包括数据处理、存储、可视化等功能。

🔄

异步架构

采用异步编程模式,支持高并发数据采集,大幅提升采集效率和系统性能。

💾

多存储支持

支持 MySQL 数据库、CSV 文件、JSON 文件等多种数据存储方式,满足不同场景需求。

安装指南

简单几步,快速开始使用 MediaCrawler

1

环境准备

确保系统已安装 Python 3.9+ 和 Node.js 16+

环境检查
# 检查 Python 版本
python --version

# 检查 Node.js 版本
node --version
2

克隆项目

从 GitHub 克隆 MediaCrawler 项目到本地

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

# 进入项目目录
cd MediaCrawler
3

安装依赖

推荐使用 uv 包管理器,速度更快、依赖解析更准确

uv 安装(推荐)
# 使用 uv 同步依赖
uv sync

# 安装浏览器驱动
uv run playwright install
传统方式
# 创建虚拟环境
python -m venv venv

# 激活虚拟环境(Windows)
venv\Scripts\activate

# 激活虚拟环境(macOS/Linux)
source venv/bin/activate

# 安装依赖
pip install -r requirements.txt

# 安装浏览器驱动
playwright install
4

开始使用

运行爬虫程序,支持多种采集模式

基本使用
# 关键词搜索模式(小红书)
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

高级配置

灵活的配置选项,满足不同场景的专业需求

🔧 基础配置

平台选择
支持 xhs、dy、ks、bili、wb、tieba、zhihu
PLATFORM = "xhs"
登录方式
二维码、手机号或 Cookie 登录
LOGIN_TYPE = "qrcode"
爬取类型
搜索、详情或创作者主页
CRAWLER_TYPE = "search"

🌐 代理配置

启用代理
开启 IP 代理池功能
ENABLE_IP_PROXY = True
代理池大小
设置代理 IP 池数量
IP_PROXY_POOL_COUNT = 5
代理提供商
选择代理服务提供商
IP_PROXY_PROVIDER_NAME = "kuaidaili"

⚙️ 性能配置

无头模式
后台运行,不显示浏览器界面
HEADLESS = True
爬取间隔
设置请求间隔时间(秒)
CRAWLER_MAX_SLEEP_SEC = 3
评论采集
是否采集帖子评论数据
ENABLE_GET_COMMENTS = True

💾 存储配置

数据库类型
MySQL、CSV 或 JSON 存储
SAVE_DATA_OPTION = "db"
数据库配置
MySQL 连接参数设置
DB_HOST = "localhost"
文件输出
CSV/JSON 文件保存路径
DATA_DIR = "./data"

完整配置示例

config/base_config.py
# MediaCrawler 完整配置示例

# 基础配置
PLATFORM = "xhs"  # 目标平台
KEYWORDS = "人工智能,机器学习,深度学习"  # 搜索关键词
LOGIN_TYPE = "qrcode"  # 登录方式
CRAWLER_TYPE = "search"  # 爬取类型

# 性能配置
HEADLESS = True  # 无头模式
SAVE_LOGIN_STATE = True  # 保存登录状态
ENABLE_GET_COMMENTS = True  # 采集评论
CRAWLER_MAX_SLEEP_SEC = 2  # 爬取间隔

# 代理配置
ENABLE_IP_PROXY = True  # 启用代理
IP_PROXY_POOL_COUNT = 3  # 代理池大小
IP_PROXY_PROVIDER_NAME = "kuaidaili"  # 代理提供商

# 存储配置
SAVE_DATA_OPTION = "db"  # 存储方式
DATABASE_CONFIG = {
    "host": "localhost",
    "port": 3306,
    "user": "root",
    "password": "password",
    "database": "mediacrawler"
}

使用示例

丰富的使用场景,满足不同数据采集需求

🔍 关键词搜索

根据关键词搜索相关帖子并采集数据

小红书 抖音 快手 B站
# 搜索编程相关内容
uv run main.py --platform xhs --lt qrcode --type search

# 在配置文件中设置关键词
KEYWORDS = "编程副业,编程兼职"

📄 指定帖子详情

根据帖子ID获取详细信息和评论

微博 贴吧 知乎
# 获取指定帖子详情
uv run main.py --platform wb --lt qrcode --type detail

# 支持批量获取多个帖子

👤 创作者主页

采集指定创作者的所有作品数据

全平台支持
# 采集创作者主页数据
uv run main.py --platform dy --lt qrcode --type creator

# 获取创作者所有作品和粉丝数据

💾 数据存储

多种数据存储方式,灵活配置

MySQL CSV JSON
# 初始化数据库表结构
python db.py

# 数据自动保存到 data/ 目录

常见问题

解答使用过程中的常见疑问,帮助您快速解决问题

如何解决登录验证码问题?

如果遇到验证码问题,建议:

  • 设置 HEADLESS = False 打开浏览器界面
  • 手动完成滑动验证码或其他验证步骤
  • 验证完成后程序会自动继续执行
  • 启用登录状态保存功能,避免频繁验证
为什么会出现 IP 被封禁的情况?

IP 被封禁通常是由于请求频率过高导致的,解决方案:

  • 增加爬取间隔时间:CRAWLER_MAX_SLEEP_SEC = 5
  • 启用 IP 代理池:ENABLE_IP_PROXY = True
  • 减少并发数量,避免过于频繁的请求
  • 使用高质量的住宅代理 IP
如何配置数据库存储?

配置 MySQL 数据库存储的步骤:

  1. 安装 MySQL 数据库并创建数据库
  2. 修改 config/db_config.py 中的数据库连接信息
  3. 运行 python db.py 初始化表结构
  4. 设置 SAVE_DATA_OPTION = "db" 启用数据库存储
支持哪些平台的数据采集?

目前支持以下 7 个主流平台:

  • 小红书 (xhs):笔记、评论、用户数据
  • 抖音 (dy):视频、评论、用户数据
  • 快手 (ks):视频、评论、用户数据
  • B站 (bili):视频、评论、用户数据
  • 微博 (wb):帖子、评论、用户数据
  • 贴吧 (tieba):帖子、回复、用户数据
  • 知乎 (zhihu):问答、评论、用户数据
如何提高数据采集的成功率?

提高采集成功率的最佳实践:

  • 使用稳定的网络环境和高质量代理
  • 合理设置请求间隔,避免过于频繁
  • 定期更新项目到最新版本
  • 使用真实的用户 Agent 和浏览器环境
  • 避免在高峰时段进行大量采集
  • 启用登录状态缓存,减少登录频率
项目的法律风险如何?

重要提醒:本项目仅供学习和研究使用,请务必遵守相关法律法规:

  • 仅用于学习爬虫技术,不得用于商业用途
  • 遵守目标平台的 robots.txt 和使用条款
  • 不得进行大规模爬取或对平台造成运营干扰
  • 合理控制请求频率,避免给平台带来负担
  • 不得用于任何非法或不当的用途

项目生态

围绕 MediaCrawler 构建的完整生态系统

🕷️

MediaCrawler

开源版本

功能强大的多平台自媒体数据采集工具,支持7个主流平台,完全开源免费。

⭐ 26.1K Stars 🍴 6.8K Forks 📝 MIT License
🚀

MediaCrawlerPro

专业版本

企业级数据采集解决方案,提供断点续爬、多账号支持、去除Playwright依赖等高级功能。

✅ 断点续爬 ✅ 多账号支持 ✅ Linux支持
🎓

CrawlerTutorial

学习教程

免费的爬虫入门教程,从基础到进阶,系统学习爬虫技术和反爬虫策略。

📚 基础教程 🔧 实战案例 🛡️ 反爬策略
📱

视频下载器

桌面应用

基于MediaCrawler的桌面端视频下载器,支持多平台视频批量下载和管理。

💻 桌面端 📥 批量下载 🎬 多格式
🤖

AI Agent

开发中

基于自媒体平台数据的AI智能分析系统,提供内容分析、趋势预测等功能。

🧠 智能分析 📈 趋势预测 💡 内容洞察
📊

数据分析工具

扩展工具

专业的数据分析和可视化工具,支持词云生成、情感分析、热点发现等功能。

☁️ 词云分析 😊 情感分析 🔥 热点发现

生态系统优势

🔄

完整闭环

从数据采集到分析应用的完整解决方案

🎯

专业支持

提供从入门到专业的全方位技术支持

🚀

持续更新

活跃的开发团队,持续优化和功能更新

🌟

社区驱动

开源社区驱动,用户共同参与项目发展

社区支持

活跃的开源社区,提供全方位的技术支持

📚

完整文档

提供详细的使用文档、常见问题解答和最佳实践指南,帮助用户快速上手。

查看文档
💬

交流群组

加入微信交流群,与其他开发者交流经验,获得实时技术支持和问题解答。

加入群组
🎓

学习教程

作者提供免费的爬虫入门教程,从基础到进阶,系统学习爬虫技术。

学习教程

开源贡献

项目完全开源,欢迎提交 Issue 和 Pull Request,共同完善项目功能。

参与贡献