ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

MediaCrawler 快速上手指南:一套配置搞定五大平台社交媒体数据采集

2026/8/15 16:19:04 拓冰建站 浏览量
MediaCrawler 快速上手指南:一套配置搞定五大平台社交媒体数据采集

MediaCrawler 快速上手指南:一套配置搞定五大平台社交媒体数据采集

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

做市场调研、内容分析或者写论文时,总绕不开同一个问题:小红书、抖音、快手、B站、微博上的帖子、评论、点赞数据,怎么批量拿下来?手动复制粘贴显然不现实,而 MediaCrawler 正是为这件事而生的一套开源 Python 爬虫框架,一次配置即可在五大主流平台间切换,采集帖子、视频、评论、点赞、转发等结构化数据。下面我用一个完整任务的视角,带你从零跑通它。

手动采集为什么走不通:先看清三个现实

在动手写代码之前,值得先了解一个背景:为什么社交平台的数据这么难拿?

第一,平台反爬很严。请求频率稍高,验证码、封 IP、风控提醒就接踵而来。第二,登录验证繁琐。二维码、短信、滑块验证轮番上阵,自动化脚本往往在第一关就卡住。第三,数据结构五花八门。同一个"点赞数",在五个平台的接口里字段名、嵌套层级完全不同,自己逐个逆向要耗费大量精力。

MediaCrawler 的思路是绕开这些硬骨头:它用 Playwright 驱动真实浏览器完成登录和交互,保留登录后的上下文环境,再通过执行 JS 表达式拿到加密参数。这样一来,你无需复现任何核心加密 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

这段做了什么:克隆项目、创建虚拟环境、装好依赖并下载 Playwright 的浏览器驱动。装完你就同时具备了采集五个平台的能力,后面切换平台只改一个配置项,不用重装任何东西。

第一次运行:把关键词变成结构化数据

打开config/base_config.py,这是整个工具的"控制台"。最关键的四个开关长这样:

PLATFORM = "xhs" # 平台:xhs | dy | ks | bili | wb KEYWORDS = "python,golang" # 想搜索的关键词,逗号分隔 LOGIN_TYPE = "qrcode" # 登录方式:qrcode | phone | cookie SAVE_DATA_OPTION = "json" # 保存方式:csv | db | json

改好关键词后,在命令行执行:

python main.py --platform xhs --lt qrcode --type search

程序会打开浏览器展示二维码,用手机 App 扫码登录,随后自动搜索关键词相关的笔记,把标题、作者、点赞数、收藏数、评论等内容落盘。你得到的不再是网页上肉眼可见的零散信息,而是整齐的 JSON 文件。

三种登录方式怎么选:按场景对号入座

登录是整个流程里最容易被卡住的环节,MediaCrawler 给了三条路:

  • 二维码登录(qrcode):最省事,适合绝大多数人,扫码即用。
  • 手机号登录(phone):结合短信转发工具可做到验证码自动回填,适合需要无人值守跑批的场景。项目里附带recv_sms_notification.py来接收转发来的验证码,具体配置见 docs 下的手机号登录说明。
  • Cookie 登录(cookie):直接粘贴已有账号的 Cookie,适合不想再碰手机的情况。

值得一提的设计是登录状态缓存:默认登录成功后会保存到项目根目录的browser_data目录,下次启动直接复用,不用重复扫码。想换账号时,删掉这个目录重新登录即可。

数据落盘:按用途选择 JSON、CSV 还是数据库

采集到的数据有三种归宿,对应三种不同需求:

保存方式适合场景输出位置
json程序化处理、保持完整结构data/ 目录
csvExcel 直接打开、快速浏览data/ 目录
db海量数据、长期管理数据库表(配置在 config/db_config.py)

选择方式就是在SAVE_DATA_OPTION里填一个值。如果你选了db,程序会自动建表并写入,数据的按平台分类和去重逻辑都已内置,不需要自己写 SQL 建表。

进阶玩法:并发、评论与定向爬取

基础跑通之后,有几个开关能让采集效率明显提升,都在同一份配置文件里:

MAX_CONCURRENCY_NUM = 4 # 并发数,越大越快,越容易被风控 CRAWLER_MAX_NOTES_COUNT = 20 # 单次最多抓多少条 ENABLE_GET_COMMENTS = True # 是否连带抓评论 XHS_SPECIFIED_ID_LIST = [...] # 指定帖子/视频 ID,精确抓取

ENABLE_GET_COMMENTS默认是关闭的,需要评论数据时记得打开。此外,--type参数支持search(关键词搜索)、detail(指定 ID 详情)、creator(创作者主页,目前小红书支持)三种模式,配合XHS_SPECIFIED_ID_LISTDY_SPECIFIED_ID_LIST这类 ID 列表,可以做到"我知道这条内容,把它完整抓下来"。

规模采集的护身符:内置代理 IP 池

当你开始批量采集时,最大的敌人就是 IP 封禁。MediaCrawler 内置了一套完整的代理 IP 管理系统,这也是它区别于大多数同类项目的地方。整个流程从提取到池化管理,见下图:

MediaCrawler 代理IP池的提取与轮换流程图

系统先从代理服务商(如极速 HTTP)批量提取 IP,存入 Redis 缓存并记录过期时间,采集时从池中随机取用,失效自动剔除补充。启用只需两步:在proxy/proxy_ip_provider.py里通过环境变量jisu_keyjisu_crypto填入你的代理密钥,然后把配置中的ENABLE_IP_PROXY设为True

代理密钥建议用环境变量管理而不是写死在代码里,这样换账号、换服务商都不用改文件。IP 池的规模由IP_PROXY_POOL_COUNT控制,日常使用两到三个就够,重度采集再往上加。

四个高频报错,对应的排查路径

采集过程不可能一帆风顺,这里整理几个出现频率最高的问题和对应解法:

  1. 抖音报错SyntaxError: 缺少 ';':这是缺 Node.js 环境,装一个 v16.8.0 左右的版本即可。
  2. 报错Timeout 30000ms exceeded:大概率是网络问题,检查是否能正常访问目标站点。
  3. 跑一会儿就抓不到数据了:多半是账号触发了平台风控,建议调低并发、加大请求间隔,别硬刚。
  4. 想换登录账号:删除项目根目录的browser_data/文件夹,重新登录。

让它成为你的长期数据工具

到此,你已经拥有了一个覆盖五大平台、支持三种登录、可切换三种存储、自带代理 IP 池的采集工具箱。下一步建议从一个小任务开始练手:选一个平台,配两个关键词,抓 20 条数据看结构,再逐步打开评论开关、接入代理池。项目结构清晰,base目录定义了所有爬虫的抽象基类,media_platform下每个平台一个子目录,想扩展新平台也有现成的骨架可以参考。

最后多说一句:技术本身是中性的,请把 MediaCrawler 用在合法的学习与研究场景,遵守目标平台的服务条款,控制好采集频率,尊重数据背后的真实用户。

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

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