MediaCrawler 多平台采集完整指南:7个平台数据跑通的3种姿势
【免费下载链接】MediaCrawler小红书笔记 | 评论爬虫、抖音视频 | 评论爬虫、快手视频 | 评论爬虫、B 站视频 | 评论爬虫、微博帖子 | 评论爬虫、百度贴吧帖子 | 百度贴吧评论回复爬虫 | 知乎问答文章|评论爬虫项目地址: https://gitcode.com/GitHub_Trending/me/MediaCrawler
想每周盯住10个竞品的抖音发布数据,手动复制粘贴已经扛不住了;或者想把一批小红书笔记连同评论区批量落到 Excel 里分析。这类活儿适合交给 MediaCrawler 多平台采集。
📦 MediaCrawler 是什么:7个平台一个入口
MediaCrawler 是一个基于 Playwright 的 Python 异步多平台自媒体采集框架,用真实浏览器登录拿签名,覆盖小红书、抖音、快手、B站、微博、贴吧、知乎共 7 个平台。
核心能力速览:
- 覆盖 7 个平台的内容与评论
- 搜索、详情、创作者三种模式
- 登录态缓存,免重复扫码
- jsonl、Excel、SQLite 等多种存储
- 代理 IP 池,3 种接入方式
- 二级评论与评论词云
- WebUI 实时日志与数据预览
- 不用逆向 JS,签名由浏览器现场计算
🧭 三种采集模式怎么选
config/base_config.py里的CRAWLER_TYPE只有三个取值:search、detail、creator,分别对应"按关键词找内容""按帖子 ID 取内容""盯住某个创作者主页"。日常用得最多的就是这一处配置,其余参数都是围着它转的。
| 模式 | 输入 | 典型用途 |
|---|---|---|
| search | KEYWORDS关键词 | 话题调研、舆情抓取 |
| detail | 帖子 ID 列表 | 定向批量采集已知内容 |
| creator | 创作者主页 URL | 博主发布动态跟踪 |
要采的具体对象写在各平台配置文件里,比如 B站的BILI_CREATOR_ID_LIST见 config/bilibili_config.py;KEYWORDS多个关键词用英文逗号分隔。对做小红书数据抓取的人来说,search 模式加上默认开启的评论采集,是最常用的组合。
⚙️ 签名怎么来的:不手写逆向 JS
小红书接口请求要带x-s、x-t这类签名参数,逆向算法是大多数同类工具的死穴。MediaCrawler 的做法是:先用真实浏览器扫码登录并保存登录态,之后在浏览器上下文里执行 JS 表达式把签名算出来,再拼进 API 请求。
也就是说,它把"逆向算法"替换成了"让浏览器自己算"。抖音、知乎因为签名逻辑在 Node 侧,项目额外调了libs/下的 JS 脚本生成参数,思路一致。
小红书的签名与追踪 ID 生成在 xhs_sign.py,浏览器端取签名的调用封装在 playwright_sign.py。七个平台的 client、core、login 三类角色统一由 base_crawler.py 里的抽象基类约束,读这一个文件就能看懂各平台代码的分工。
🌐 代理 IP 池怎么配才稳
单 IP 长时间请求很快触发风控,这是同类项目最常见的翻车点。项目用一个ProxyIpPool类解决:启动时按配置批量从代理商 API 拉 IP,逐个探测可用性后入池,用完自动补充。
三个配置项控制整套机制,都写在config/base_config.py:
ENABLE_IP_PROXY = True IP_PROXY_POOL_COUNT = 2 IP_PROXY_PROVIDER_NAME = "kuaidaili" # kuaidaili | wandouhttp | static池子的拉取与校验逻辑在 proxy_ip_pool.py,各代理商适配模块在 proxy/providers/。如果手头只有固定的独享代理,选static,把地址填进STATIC_PROXY_URL即可,不需要任何 API。
上图是代理商后台提取 IP 链接的界面,key和num参数对应到项目里的提供方配置,改完就能用。
🚀 四步跑通第一条数据
前提是装好 uv;采抖音、知乎的话再装 Node.js(≥16),因为签名要用。
- 拉取代码:
git clone https://gitcode.com/GitHub_Trending/me/MediaCrawler cd MediaCrawler这步把项目拿到本地。
按锁文件安装 Python 依赖,保证版本一致。uv sync- 打开 config/base_config.py,把
KEYWORDS改成你关心的词,CRAWLER_TYPE保持默认search。 这一步决定"采什么"。
弹出浏览器,用 App 扫码登录,脚本自动开始采集。uv run main.py --platform xhs --lt qrcode --type search
跑完到data/目录确认生成了笔记与评论文件,链路就算通了。存储格式怎么选,参考 data_storage_guide.md:
| 格式 | 适合场景 |
|---|---|
| jsonl(默认) | 大批量连续采集,追加写性能好 |
| Excel | 快速出报告,内容/评论分工作表 |
| SQLite | 需要去重和二次查询 |
| csv / json | 直接交给下游程序 |
📥 一个完整案例:B站UP主视频入库 SQLite
任务:采一个指定 UP 主近期的视频列表和评论,存进本地 SQLite,方便后续查"近 30 天"这类条件。MediaCrawler 多平台采集的端到端闭环就是下面五步。
config/base_config.py里把PLATFORM改成"bili",SAVE_DATA_OPTION改成sqlite。 这步告诉程序用哪个平台、结果写哪里。config/bilibili_config.py的BILI_CREATOR_ID_LIST填入 UP 主空间主页 URL 或 UID,并用CRAWLER_MAX_NOTES_COUNT控制视频条数。- 初始化库表:
uv run main.py --init_db sqlite提前建好内容、评论等表结构。
- 启动采集:
uv run main.py --platform bili --lt qrcode --type creator扫码后程序翻页拉取视频与评论,逐条写入数据库。
- 产物检查:到
data/目录找到.db文件,用任意 SQLite 客户端打开,核对内容表和评论表的条数与发布时间字段。
表结构统一定义在 models.py,每个平台各有一套内容表和评论表。
🔌 进阶扩展点:自定义存储与换代理商
自定义存储管道。每个平台目录里都有一个 StoreFactory,把SAVE_DATA_OPTION映射到具体存储类,store/bilibili/init.py 里能看到 jsonl、csv、sqlite、excel 各自的注册方式。想推消息队列或数据仓库,照着写一个新存储类注册进去就行。
代理提供方调优。内置 kuaidaili、wandouhttp、static 三种提供方,换其他代理商就在proxy/providers/下新增一个适配模块。代理商后台的 API 密钥页长这样:
独享代理的账号密码鉴权同样在后台"代理鉴权"一栏提取:
还有一个方向:不碰命令行,启动uv run uvicorn api.main:app --port 8080,再构建 webui/ 下的前端,就能在浏览器里配参数、看实时日志。
⚠️ 新手避坑清单
- 扫码后登录一直失败 → 无头模式下过不了滑块验证 → 设
HEADLESS = False手动过滑块,或启用默认的 CDP 模式连接本机 Chrome。 - 关键词搜不到内容 →
KEYWORDS里写了中文逗号 → 改用英文逗号分隔多个词。 - 开了
ENABLE_IP_PROXY但代理没生效 → 提供方 API 参数没配或后台没加 IP 白名单 → 核对IP_PROXY_PROVIDER_NAME对应参数,static 则检查STATIC_PROXY_URL。 - CDP 模式报 9222 端口占用 → 已有另一个开了远程调试的 Chrome 实例 → 换
CDP_DEBUG_PORT。 - 标准 Playwright 模式起不来浏览器 → 没装浏览器内核 → 执行
uv run playwright install;默认 CDP 模式直接用系统 Chrome,可跳过。
请求失败时程序会按退避策略自动重试,逻辑在 crawler_util.py;如果错误持续出现,优先检查登录态是否过期。
适合需要快速搭多平台数据管道的人,以及做多平台爬虫框架选型评估的团队。先看 README.md,再按本文引用路径读存储和代理的源码。
【免费下载链接】MediaCrawler小红书笔记 | 评论爬虫、抖音视频 | 评论爬虫、快手视频 | 评论爬虫、B 站视频 | 评论爬虫、微博帖子 | 评论爬虫、百度贴吧帖子 | 百度贴吧评论回复爬虫 | 知乎问答文章|评论爬虫项目地址: https://gitcode.com/GitHub_Trending/me/MediaCrawler
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考