MediaCrawler 快速上手指南:3 步跑通五平台社交媒体数据采集
【免费下载链接】MediaCrawler-new项目地址: https://gitcode.com/GitHub_Trending/me/MediaCrawler-new
做竞品监控时,你要把一款新品在小红书和抖音上的表现逐条手动收集,既慢又难统一口径。MediaCrawler 是一个面向社交媒体数据采集的多平台爬虫工具,一条命令即可抓取小红书、抖音、快手、B 站、微博五个平台的视频、图片、评论和互动数据,适合竞品分析、热点监控、论文素材收集这类场景。
三步跑起来第一条采集任务
最短路径是:装依赖 → 改几行配置 → 跑一条命令,数据落到data/目录。
第 1 步,准备环境。需要 Python 3.8 及以上;如果准备爬抖音,先装好 Node.js v16.8.0,否则运行时会报 JS 执行错误:
git clone https://gitcode.com/GitHub_Trending/me/MediaCrawler-new cd MediaCrawler-new python -m venv venv # 激活: source venv/bin/activate (Windows 用 venv\Scripts\activate) pip install -r requirements.txt playwright install第 2 步,改配置。核心参数都集中在 config/base_config.py,首次运行只需要动这 5 个:
PLATFORM = "xhs" # 目标平台: xhs / dy / ks / bili / wb KEYWORDS = "python编程" # 搜索关键词,多个用逗号分隔 CRAWLER_MAX_NOTES_COUNT = 50 # 采集条数上限,首次跑建议调小 LOGIN_TYPE = "qrcode" # 登录方式: qrcode / phone / cookie SAVE_DATA_OPTION = "json" # 存储格式: json / csv / db第 3 步,运行采集。会自动弹出浏览器窗口,用手机 APP 扫码登录后就开始抓数据:
python main.py --platform xhs --lt qrcode --type search跑完后结果存在data/目录。--type可选 3 个值:search按关键词搜索、detail按指定帖子 ID 采集、creator采集创作者主页数据(目前仅小红书支持)。
它为什么不走传统爬虫路线
它用 Playwright 驱动一个真实浏览器,复用登录后的上下文,在浏览器里执行 JS 拿到加密参数,省去了自己复现加密逻辑这一步。你能直接感知的收益有三个:
- 平台风控升级时,通常只需调整页面元素选择器,不用重写加密逻辑;
- 请求行为更接近真实用户,比直接打 API 更不容易触发风控;
- 不需要逆向工程经验,会操作浏览器就能上手。
代价是采集速度比纯 API 爬虫慢一些,所以要控制单次数量和并发数,下一节会讲。
挑个场景直接套用
三个场景都只改关键词和数量两样东西,拿到的字段结构一致。
电商竞品监控:KEYWORDS填竞品品牌名加新品名,CRAWLER_MAX_NOTES_COUNT给到几百,每周跑一次,拿到每篇笔记的点赞、收藏、评论数,能判断竞品哪类内容真的在带动互动。
论文素材收集:先人工筛一批笔记,把 ID 填进配置里对应平台的 ID 列表(如XHS_SPECIFIED_ID_LIST),用--type detail精确采集全文和互动数据;同时把ENABLE_GET_COMMENTS = True,把评论一起拿下来,内容分析的素材就齐了。
热点话题监控:KEYWORDS填当期热词,小红书可用SORT_TYPE按热度排序,同一条命令只换--platform就能对比同一话题在不同平台的分布差异。
跑之前先调的参数
这些参数不用每次都动,出现对应情况再改:
- 登录失败、扫码卡住:把
HEADLESS = False打开浏览器,手动过一次滑块验证码;或把LOGIN_TYPE换成cookie复用已有登录态。 - 不想反复登录:
SAVE_LOGIN_STATE默认开启,浏览器数据存在browser_data/目录;换账号就删掉该目录。 - 频繁触发风控、IP 被限:
ENABLE_IP_PROXY = True开启代理池,用法见 docs/代理使用.md。

- 速度要快或要稳:
MAX_CONCURRENCY_NUM(默认 4)控制并发爬虫数,风控严的平台建议降到 1–2。 - 需要评论数据:
ENABLE_GET_COMMENTS = True,运行时长会明显变长,只要帖子数据就保持关闭。
代理 IP 拉不到、密钥过期时,需要到服务商处更新密钥,位置如下:
出问题时的排查清单
先按「登录 → 网络 → 依赖」的顺序查,大部分报错落在这 5 类里:
| 现象 | 优先检查项 |
|---|---|
| 扫码超时、登录不通过 | 换手机号或 cookie 登录;HEADLESS = False手动过滑块 |
抖音报execjs.ProgramError: SyntaxError | 没装 Node.js,安装 v16.8.0 |
TimeoutError: Timeout 30000ms exceeded | 网络不佳或代理没生效,检查网络连通性 |
| 刚跑能采、过段时间失效 | 账号触发平台风控,暂停任务、换账号(删browser_data/)、降并发 |
跑完data/里没有数据 | 核对SAVE_DATA_OPTION;选 db 时检查config/db_config.py的数据库连接 |
更多报错信息可对照 docs/常见问题.md。
合规红线
- 数据仅用于学习和研究,项目声明明确禁止商业用途。
- 控制请求量级和频率,不做大规模抓取,更别长期挂机。
- 不采集、不使用他人隐私数据,内容以公开帖子为限。
- 使用前读一遍目标平台的用户协议,避开明显违反约定的抓取方式。
今天就拿到第一批数据
挑一个你常用平台,把 3 个左右的关键词填进配置,今天就把第一条采集任务跑完。遇到问题或有改进想法,欢迎到项目的 issue 区留言,或进交流群讨论:
【免费下载链接】MediaCrawler-new项目地址: https://gitcode.com/GitHub_Trending/me/MediaCrawler-new
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考