MediaCrawler 教程:一键爬取小红书/抖音/B站/知乎等多平台自媒体数据
MediaCrawler 教程:一键爬取小红书/抖音/B站/知乎等多平台自媒体数据做自媒体内容分析、竞品调研、数据挖掘的时候,你是不是遇到过这些痛点:
想要批量采集竞品笔记内容,一个个手动复制太折磨人各大平台反爬机制越来越严,接口说封就封网上的爬虫教程要么过时,要么需要复杂的 JS 逆向,新手根本搞不定每个平台都要写不同的爬虫,维护成本太高今天给大家介绍一个 GitHub 上 13k+ Star 的开源项目 MediaCrawler,它完美解决了这些问题。
什么是 MediaCrawlerMediaCrawler 是一个功能强大的多平台自媒体数据采集工具,支持小红书、抖音、快手、B站、微博、贴吧、知乎七大主流平台的公开信息抓取。
它最聪明的地方在于技术路线的选择:
基于 Playwright 浏览器自动化,直接操作真实浏览器利用浏览器登录态,不需要逆向复杂的签名算法支持 CDP 模式,连接你自己已经登录的 Chrome 浏览器,风控概率极低代码结构清晰,每个平台解耦,二次开发很方便
功能特性一览平台关键词搜索指定帖子爬取二级评论创作者主页登录缓存IP代理池词云图小红书✅✅✅✅✅✅✅抖音✅✅✅✅✅✅✅快手✅✅✅✅✅✅✅B 站✅✅✅✅✅✅✅微博✅✅✅✅✅✅✅贴吧✅✅✅✅✅✅✅知乎✅✅✅✅✅✅✅支持多种数据存储格式:CSV、JSON、JSONL、Excel、SQLite、MySQL。爬完直接分析,非常方便。
还自带 WebUI 可视化界面,不用记命令也能玩:
技术原理:为什么它不容易被封传统爬虫的思路是:
抓包分析接口逆向 JS 找到加密签名算法模拟请求获取数据这条路现在越来越难走:
各大平台签名算法经常变,今天能用明天就挂IP 风控严格,请求几次就限流需要不停维护,精力都花在适配反爬上了MediaCrawler 换了个思路:
你的浏览器已经登录了 → 用 CDP 远程连接你的浏览器 → 直接在浏览器里执行 JS 获取数据 → 天然带着登录态和真实指纹
优点显而易见:
无需 JS 逆向:不用跟加密算法斗智斗勇登录态复用:你已经在浏览器登录过,不需要再处理二维码登录(当然也支持二维码)极低风控:请求来自真实浏览器,指纹就是你的指纹,很难被检测稳定性高:平台界面变了只要结构不变,代码不用大改5 分钟快速上手环境要求Python 3.10+Node.js 16+(抖音、知乎需要)uv(推荐,比 pip 快 10x)步骤 1:克隆项目git clone https://github.com/NanmiCoder/MediaCrawler.git
cd MediaCrawler
步骤 2:安装依赖推荐用 uv 安装:
# 安装 uv(如果还没装)
curl -LsSf https://astral.sh/uv/install.sh | sh
# 安装项目依赖
uv sync
如果你坚持用 pip:
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
步骤 3:浏览器驱动安装(标准模式需要)如果你用默认的 CDP 模式(连接已有 Chrome),这一步可以跳过。只有切换到标准 Playwright 模式才需要:
uv run playwright install
步骤 4:配置 Chrome 远程调试(推荐 CDP 模式)CDP 模式是我最推荐的方式,因为它复用你已经登录的浏览器,几乎不会被封。
开启方法:
确保安装了 Chrome >= 144在 Chrome 地址栏输入:chrome://inspect/#remote-debugging勾选 “Allow remote debugging for this browser instance”看到 Server running at: 127.0.0.1:9222 就好了运行爬虫后,Chrome 会弹出连接确认框,点接受即可。程序会等你 60 秒。
如果不想用 CDP 模式,在 config/base_config.py 里改:
ENABLE_CDP_MODE = False
步骤 5:修改配置打开 config/base_config.py,根据需要修改:
# 是否开启评论爬取
ENABLE_GET_COMMENTS = True
# 关键词搜索
KEYWORDS = "AI工具"
# 指定帖子 ID 爬取,每行一个 ID
FETCH_POST_ID_LIST = [
"abc123",
"xyz456",
]
# 指定博主 ID 爬取,每行一个 ID
FETCH_CREATOR_ID_LIST = [
"creator1",
"creator2",
]
# 最大爬取数量
MAX_PAGE_COUNT = 5
每个配置项都有中文注释,很容易懂。
步骤 6:运行爬取关键词搜索示例(小红书):
uv run main.py --platform xhs --lt qrcode --type search
参数说明:
--platform xhs:指定平台,xhs=小红书,douyin=抖音,bilibili=B站,zhihu=知乎…--lt qrcode:登录方式,qrcode=二维码,cdp=连接已有浏览器--type search:爬取类型,search=关键词搜索,detail=指定帖子详情指定帖子详情示例:
uv run main.py --platform xhs --lt qrcode --type detail
查看所有支持的参数:
uv run main.py --help
使用 WebUI 可视化界面不想敲命令?项目自带 WebUI:
uv run uvicorn api.main:app --port 8080 --reload
打开浏览器访问 http://localhost:8080,就能可视化操作:
选择平台、登录方式、爬取类型填写关键词或帖子 ID实时查看运行日志预览导出数据
数据存储配置MediaCrawler 支持多种存储方式,在 base_config.py 里配置:
# 支持: csv, json, jsonl, excel, sqlite, mysql
STORAGE_TYPE = "csv"
# MySQL 配置(如果用 MySQL)
MYSQL_CONFIG = {
"host": "localhost",
"port": 3306,
"user": "root",
"password": "password",
"database": "mediacrawler",
}
配置好自动创建表,不用自己建。
常见问题Q1: 会被封号吗?A: CDP 模式用的是你自己已经登录的浏览器,请求完全模拟真人,只要不是太疯狂的爬速度,概率极低。作者用了几年都没事。建议控制一下请求间隔,不要每秒请求几十次。
Q2: 为什么需要 Node.js?A: 抖音和知乎的部分签名逻辑需要用 Node.js 执行,这是从官方客户端 JS 直接抠出来的,比 Python 重新实现稳定很多。
Q3: 支持手机号验证码登录吗?A: 支持。项目里有 recv_sms.py 可以对接短信转发工具,配合二维码/验证码登录使用。
Q4: 爬下来的数据在哪里?A: 默认存在 store/ 目录下,按平台分文件存放。
Pro 版本 vs 开源版本作者还维护了一个 Pro 版本,功能更强,架构更优:
核心升级:
✅ 自媒体内容拆解 AI Agent✅ 断点续爬功能✅ 多账号 + IP 代理池支持✅ 去除 Playwright 依赖✅ 完整 Linux 支持✅ 代码重构,更易维护
感兴趣可以关注:MediaCrawlerPro
适用场景 & 不适用场景✅ 适合用 MediaCrawler 的场景竞品分析,需要批量采集对手内容内容创作,找同领域热门选题舆情监控,关键词信息收集学术研究,数据采集分析个人学习,研究浏览器爬虫技术❌ 不适合的场景大规模商用爬取(本来就是学习项目)爬取非公开信息(违法,作者免责声明写得很清楚)需要极高并发(这是浏览器爬虫,不是接口爬虫)项目结构赏析MediaCrawler/
├── api/ # WebUI API
├── config/ # 配置文件
├── media_platform/ # 各平台实现
│ ├── xhs/ # 小红书
│ ├── douyin/ # 抖音
│ ├── bilibili/ # B站
│ ├── zhihu/ # 知乎
│ └── ...
├── media_platform/ # 平台代码解耦,加新平台很方便
└── main.py # 入口
每个平台都是独立模块,想加新平台照着抄就行,代码写得非常干净,很适合学习怎么设计一个可维护的爬虫项目。
总结MediaCrawler 是我见过对新手最友好的多平台爬虫项目:
不用折腾 JS 逆向,拿到就能跑CDP 模式天然防封,稳定性高七大平台支持,覆盖主流自媒体代码清晰易懂,适合学习二次开发如果你需要采集自媒体数据,又不想在反爬上浪费时间,一定要试试这个项目。
项目地址: https://github.com/NanmiCoder/MediaCrawler
免责声明:本项目仅供学习交流使用,请遵守各平台规定和相关法律法规,禁止用于非法用途。
相关链接官方文档MediaCrawlerPro作者 B 站主页