5大平台社交媒体数据采集实战:MediaCrawler-new 一个开源工具全搞定
2026/8/24 5:34:41 网站建设 项目流程

5大平台社交媒体数据采集实战:MediaCrawler-new 一个开源工具全搞定

【免费下载链接】MediaCrawler-new项目地址: https://gitcode.com/GitHub_Trending/me/MediaCrawler-new

阿琳是某美妆品牌的运营,每周要交一份小红书竞品分析。她试过手动复制、也试过网上找的采集脚本,结果是报告越攒越多、公司 IP 却先被平台封了。直到她用上开源项目 MediaCrawler-new——一个基于 playwright 的社交媒体数据采集工具,能统一抓取小红书、抖音、快手、B站、微博五个平台的数据,反爬应对不再靠玄学,而是变成了清晰的配置项。

这篇文章不打算罗列功能清单,而是按一条真实可复现的路径走:从安装环境、跑通第一个采集任务,到完成一次完整的竞品调研,看看它到底能帮你省下多少时间。

它把"反爬对抗"变成了"配置项"

先说原理,尽量少用术语。平台为什么会拦截爬虫?因为正常用户的行为和机器脚本有可辨识的差异。MediaCrawler-new 的思路很直接:不做加密算法的逆向,而是用 playwright 启动一个真实浏览器,登录成功后保留浏览器上下文,需要加密参数时直接让浏览器执行 JS 表达式取回来。

打个比方:别人在门外研究锁芯结构想配钥匙,它干脆让钥匙自己从门里递出来。这样一来,逆向成本大幅降低,日常维护也轻松很多。

围绕这个思路,项目把采集会用到的东西都封装成了开关和参数:登录方式、代理 IP 池、数据落盘格式、采集条数、并发数、是否爬评论……绝大多数需求不用改代码,改配置就能跑。

一张表看懂五个平台各自能干什么

能力点小红书抖音快手B站微博
Cookie 登录
二维码登录
手机号登录
关键词搜索
指定帖子/视频 ID 采集
指定创作者主页
登录状态缓存(免重复登录)
数据保存(csv / db / json)
IP 代理池
滑块验证码处理
视频批量下载

几个值得注意的点:小红书是目前唯一支持抓"指定创作者主页"的平台;抖音额外实现了滑块验证码的自动处理,遇到验证页不容易卡死;B 站的video_download类型支持按 BV 号批量下载视频。其余能力五个平台基本对齐,学一次配置,五处复用。

从零跑通首个采集任务:环境准备到关键词搜索

安装三步走

打开终端,按顺序执行下面几段命令,每段都附了注释:

# 1. 克隆项目到本地 git clone https://gitcode.com/GitHub_Trending/me/MediaCrawler-new cd MediaCrawler-new # 2. 创建并激活 Python 虚拟环境,避免依赖污染系统环境 python -m venv venv source venv/bin/activate # Windows 用户用 venv\Scripts\activate # 3. 安装依赖库(playwright、requests、数据库驱动等) pip install -r requirements.txt # 4. 安装 playwright 的浏览器内核,这是模拟真实浏览器的基础 playwright install

如果电脑里还没有 Node.js,建议装一个 v16.8.0 或更高版本,后面跑抖音平台时会用到。

只需改四个配置项

打开config/base_config.py,先关注最常用的几行:

PLATFORM = "xhs" # 目标平台:xhs / dy / ks / bili / wb KEYWORDS = "粉底液,遮瑕膏" # 关键词,多个词用英文逗号分隔 LOGIN_TYPE = "qrcode" # 登录方式:qrcode / phone / cookie SAVE_DATA_OPTION = "json" # 数据保存:csv / db / json

跑起来

# 用手机小红书 App 扫码登录,按关键词搜索并采集 python main.py --platform xhs --lt qrcode --type search

程序会弹出浏览器窗口并显示二维码,扫码确认后就开始干活。默认的CRAWLER_MAX_NOTES_COUNT = 20限制单次采集条数,先跑一次看看效果,再逐步放开。

一次美妆竞品调研,体验完整采集流程

场景设定:某美妆品牌需要每周跟踪小红书上的竞品口碑。下面把登录、代理、存储、调参四个环节串起来走一遍。

第一步:按账号情况选登录方式

  • 二维码登录(qrcode):首次使用最省事,App 扫码即完成登录。
  • Cookie 登录(cookie):已有登录态的账号,把 Cookie 填进配置里的COOKIES字段,适合快速恢复采集状态。
  • 手机号登录(phone):配合项目里的recv_sms_notification.py短信接收服务,适合长期无人值守的场景。

登录状态默认会缓存到本地(SAVE_LOGIN_STATE = True),下次启动不用重新扫码。想换账号时,删掉项目根目录下的brower_data/文件夹再跑即可。

第二步:避免IP封禁的代理配置思路

连续高频请求最容易触发平台风控。项目内置的代理 IP 池流程如下:启动时从代理服务商拉取一批 IP,存入 Redis 缓存并记录过期时间,再构建 IP 池供爬虫按需取用。采集过程中 IP 失效或次数用完,会自动从池里换下一个。

MediaCrawler-new代理IP池工作流程图:社交媒体数据采集中的IP轮换与Redis缓存

具体到配置,三步就够:

  1. 安装 Redis 并设置密码(代理 IP 池依赖它做缓存和过期管理)。
  2. 去代理服务商注册实名,在 IP 提取页生成 API 链接,重点关注keycrypto两个参数:

  1. keycrypto写入环境变量,或直接填到proxy/proxy_ip_provider.py的对应位置:

然后把config/base_config.py里的ENABLE_IP_PROXY改为TrueIP_PROXY_POOL_COUNT决定池子里同时维护几个 IP。轻量采集 2~3 个够用,批量采集建议 5 个以上。

第三步:想好数据落到哪里

  • csv:Excel 直接打开,适合快速浏览和简单透视。
  • json:保留完整字段结构,适合程序化处理,也是脚本间传递数据的首选。
  • db:在config/db_config.py里填好 MySQL 或 PostgreSQL 连接信息,数据自动入库,适合需要复杂查询、持续积累的长期项目。切到db时程序会自动建表,无需手工初始化。

第四步:控制采集量,别把自己送进风控名单

关键词用KEYWORDS配置;单次条数用CRAWLER_MAX_NOTES_COUNT;需要连带评论时把ENABLE_GET_COMMENTS打开;并发数调MAX_CONCURRENCY_NUM。建议从低并发、少条数开始,确认链路稳定再放开。

高频报错排查与性能调优建议

常见报错,一张表对照解决

报错现象常见原因处理办法
execjs SyntaxError: 缺少 ';'缺 Node.js 环境安装 v16.8.0 或更高版本
TimeoutError: Timeout 30000ms exceeded网络不通或代理异常检查网络与代理设置
跑几天后数据开始失效账号触发平台风控立即降频、停一停,必要时换账号
想换登录账号却一直沿用旧状态浏览器数据目录残留删除brower_data/文件夹后重新登录
登录页卡在滑块验证小红书手动过验证更稳HEADLESS设为False,打开浏览器手动滑动一次

让采集更稳的几个习惯

  • 避开平台高峰时段批量采集,请求间隔尽量拉开一点。
  • 数据量大的项目优先用数据库存储,CSV 在读写频繁时性能会明显吃紧。
  • 开启代理 IP 轮换,并定期检查池里 IP 的存活情况。
  • 规模采集用无头浏览器(HEADLESS = True)省资源;登录阶段则建议开可视化窗口,方便人工介入验证。

写在最后:合规底线和你的下一步

最后必须认真说三件事:遵守各平台规则,只采集公开可访问的数据;不碰用户隐私;控制采集频率,别给平台服务器造成压力。这个工具适合做市场调研、内容创作辅助和学术研究,不适合也无必要用于任何越界行为。

现在轮到你了。按上面的步骤做三件事就能跑通第一个任务:克隆项目到本地,把config/base_config.py里的平台、关键词、登录方式配好,然后执行python main.py --platform xhs --lt qrcode --type search。等终端开始输出数据、data/目录里出现第一批结果时,你就真正上手了。采集到的数据怎么用、能产生多大价值,取决于你的场景——但把获取数据的成本降下来,永远是第一步。

【免费下载链接】MediaCrawler-new项目地址: https://gitcode.com/GitHub_Trending/me/MediaCrawler-new

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询