项目概述
一个功能强大的多平台自媒体数据采集工具,让数据获取变得简单高效
多平台支持
支持小红书、抖音、快手、B站、微博、贴吧、知乎等7个主流自媒体平台的数据采集,一个工具解决所有需求。
技术先进
基于 Playwright 浏览器自动化框架,利用保留登录态的浏览器上下文环境,无需逆向复杂的加密算法。
数据丰富
支持关键词搜索、指定帖子爬取、二级评论、创作者主页数据等多种数据采集模式,满足不同场景需求。
登录态缓存
智能保存登录状态,避免频繁登录验证,提高采集效率和稳定性。
IP代理池
内置IP代理池支持,有效避免IP封禁问题,确保长时间稳定运行。
词云生成
自动生成评论词云图,直观展示热门话题和用户关注点,便于数据分析。
平台功能支持
全面支持主流自媒体平台的各项数据采集功能
功能支持一览表
核心优势
相比传统爬虫方案,MediaCrawler 具有显著的技术优势
❌ 传统爬虫方案
✅ MediaCrawler
零逆向工程
利用 Playwright 保持登录态,通过 JS 表达式直接获取签名参数,无需复杂的算法逆向。
自动适应更新
基于浏览器环境运行,平台算法更新时无需修改代码,自动适应变化。
高效并发
异步架构设计,支持多任务并发执行,大幅提升数据采集效率。
反检测机制
模拟真实用户行为,内置多种反检测策略,有效降低被封禁风险。
技术架构
基于现代化技术栈,提供稳定可靠的数据采集解决方案
Playwright 核心
基于 Microsoft 开发的 Playwright 浏览器自动化框架,提供强大的页面控制能力和反检测机制。
Python 生态
使用 Python 3.9+ 开发,充分利用丰富的第三方库生态,包括数据处理、存储、可视化等功能。
异步架构
采用异步编程模式,支持高并发数据采集,大幅提升采集效率和系统性能。
多存储支持
支持 MySQL 数据库、CSV 文件、JSON 文件等多种数据存储方式,满足不同场景需求。
安装指南
简单几步,快速开始使用 MediaCrawler
环境准备
确保系统已安装 Python 3.9+ 和 Node.js 16+
# 检查 Python 版本
python --version
# 检查 Node.js 版本
node --version
克隆项目
从 GitHub 克隆 MediaCrawler 项目到本地
# 克隆项目
git clone https://github.com/NanmiCoder/MediaCrawler.git
# 进入项目目录
cd MediaCrawler
安装依赖
推荐使用 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
开始使用
运行爬虫程序,支持多种采集模式
# 关键词搜索模式(小红书)
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
高级配置
灵活的配置选项,满足不同场景的专业需求
🔧 基础配置
🌐 代理配置
⚙️ 性能配置
💾 存储配置
完整配置示例
# 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"
}
使用示例
丰富的使用场景,满足不同数据采集需求
🔍 关键词搜索
根据关键词搜索相关帖子并采集数据
# 搜索编程相关内容
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
# 获取创作者所有作品和粉丝数据
💾 数据存储
多种数据存储方式,灵活配置
# 初始化数据库表结构
python db.py
# 数据自动保存到 data/ 目录
常见问题
解答使用过程中的常见疑问,帮助您快速解决问题
如果遇到验证码问题,建议:
- 设置
HEADLESS = False打开浏览器界面 - 手动完成滑动验证码或其他验证步骤
- 验证完成后程序会自动继续执行
- 启用登录状态保存功能,避免频繁验证
IP 被封禁通常是由于请求频率过高导致的,解决方案:
- 增加爬取间隔时间:
CRAWLER_MAX_SLEEP_SEC = 5 - 启用 IP 代理池:
ENABLE_IP_PROXY = True - 减少并发数量,避免过于频繁的请求
- 使用高质量的住宅代理 IP
配置 MySQL 数据库存储的步骤:
- 安装 MySQL 数据库并创建数据库
- 修改
config/db_config.py中的数据库连接信息 - 运行
python db.py初始化表结构 - 设置
SAVE_DATA_OPTION = "db"启用数据库存储
目前支持以下 7 个主流平台:
- 小红书 (xhs):笔记、评论、用户数据
- 抖音 (dy):视频、评论、用户数据
- 快手 (ks):视频、评论、用户数据
- B站 (bili):视频、评论、用户数据
- 微博 (wb):帖子、评论、用户数据
- 贴吧 (tieba):帖子、回复、用户数据
- 知乎 (zhihu):问答、评论、用户数据
提高采集成功率的最佳实践:
- 使用稳定的网络环境和高质量代理
- 合理设置请求间隔,避免过于频繁
- 定期更新项目到最新版本
- 使用真实的用户 Agent 和浏览器环境
- 避免在高峰时段进行大量采集
- 启用登录状态缓存,减少登录频率
重要提醒:本项目仅供学习和研究使用,请务必遵守相关法律法规:
- 仅用于学习爬虫技术,不得用于商业用途
- 遵守目标平台的 robots.txt 和使用条款
- 不得进行大规模爬取或对平台造成运营干扰
- 合理控制请求频率,避免给平台带来负担
- 不得用于任何非法或不当的用途
项目生态
围绕 MediaCrawler 构建的完整生态系统
MediaCrawler
开源版本功能强大的多平台自媒体数据采集工具,支持7个主流平台,完全开源免费。
MediaCrawlerPro
专业版本企业级数据采集解决方案,提供断点续爬、多账号支持、去除Playwright依赖等高级功能。
CrawlerTutorial
学习教程免费的爬虫入门教程,从基础到进阶,系统学习爬虫技术和反爬虫策略。
视频下载器
桌面应用基于MediaCrawler的桌面端视频下载器,支持多平台视频批量下载和管理。
AI Agent
开发中基于自媒体平台数据的AI智能分析系统,提供内容分析、趋势预测等功能。
数据分析工具
扩展工具专业的数据分析和可视化工具,支持词云生成、情感分析、热点发现等功能。
生态系统优势
完整闭环
从数据采集到分析应用的完整解决方案
专业支持
提供从入门到专业的全方位技术支持
持续更新
活跃的开发团队,持续优化和功能更新
社区驱动
开源社区驱动,用户共同参与项目发展
社区支持
活跃的开源社区,提供全方位的技术支持