告别手动复制粘贴:MediaCrawler多平台自媒体数据采集从零跑通全流程
MediaCrawler基于真实浏览器登录Drafting the technical article content态,支持小红书、抖音等七大平台关键词搜索、指定帖子与创作者主页采集。本文详解环境搭建、三种模式配置、代理频率控制与常见卡顿排查,让新手也能快速稳定拿到笔记评论数据。
项目能做什么,为什么不用自己写爬虫
做小红书话题分析、抖音评论挖掘,或者微博贴吧数据整理时,最头疼的就是批量把笔记、视频和评论抓下来。手动复制又慢又容易漏,自己写爬虫还得对着各家加密签名、风控参数一点点逆向,耗时又容易封号。
MediaCrawler专门解决这件事。它覆盖小红书、抖音、快手、B站、微博、贴吧、知乎七个平台,核心思路是用Playwright接管真实Chrome浏览器,直接复用你日常登录的Cookie和指纹。不用去拆各家的签名算法,浏览器怎么操作它就怎么采,风控压力小很多。数据最终落到本地文件或数据库,方便后续做词云、情感分析或者简单统计。
整套流程可以概括成:装好依赖、连上自己的Chrome、改几个配置项、跑一次扫码登录,后面就能反复用。下面按最短路径把关键点讲清楚。
环境准备与依赖安装
先把项目拉到本地。推荐用uv管理依赖,速度比传统pip快不少。
git clone https://gitcode.com/GitHub_Trending/me/MediaCrawler
cd MediaCrawler
uv sync项目默认走CDP模式,也就是接管你自己日常使用的Chrome。这样做的好处是指纹、扩展、Cookie全是真实的,比无头浏览器更不容易触发验证。准备工作只有两步:把Chrome升到144以上版本(地址栏输入chrome://version可查),然后打开chrome://inspect/#remote-debugging,勾选允许远程调试,看到9222端口提示就说明就绪。
配置文件主要动config/base_config.py里的几项。PLATFORM写平台简称(比如xhs),KEYWORDS填搜索词,CRAWLER_TYPE选search、detail或creator,CRAWLER_MAX_NOTES_COUNT控制最多采多少条,SAVE_DATA_OPTION默认jsonl。其余保持默认就行。
首次运行命令类似:
uv run main.py --platform xhs --lt qrcode --type search命令行参数会覆盖配置文件同名项。第一次会弹浏览器让你扫码,登录态默认会自动保存,之后再跑就直接复用。数据统一写到data目录。

三种采集模式怎么选
CRAWLER_TYPE这一行决定玩法。search模式输入关键词,拿到命中的帖子列表加评论;detail模式输入帖子链接列表,专抓指定内容详情和评论;creator模式输入博主主页链接,采主页信息加近期发帖。
搜索模式适合话题洞察,控制CRAWLER_MAX_NOTES_COUNT和单帖评论上限即可。指定帖子模式把ENABLE_GET_COMMENTS打开就能拿一级评论,二级评论默认关着。创作者模式同样用最大笔记数限制体量。如果还要视频或图片素材,把ENABLE_GET_MEIDAS改成True,默认只采元数据不下载文件。想顺带生成评论词云,打开ENABLE_GET_WORDCLOUD,仅在json或jsonl存储下生效。
三种模式共用同一套登录态和代理逻辑,切换成本很低。实际用的时候先小批量试跑,确认字段完整再放大规模。
代理、频率与存储怎么配才稳
量大或者平台风控严时,代理几乎是必选项。把ENABLE_IP_PROXY设为True,指定服务商名称和池大小。启动时会按池大小拉一批IP进内存,每次请求随机抽一个,用完移除,并先做连通性测试。IP带有效期,过期或连续失败会自动补货。静态代理则直接填固定地址格式。
密钥放在环境变量里,不写进配置文件,避免泄露。频率控制核心是CRAWLER_MAX_SLEEP_SEC,默认2秒随机等待。小批量保持默认足够,量大或风控严就调到3到5秒,同时把并发数MAX_CONCURRENCY_NUM先维持在1,并发越高IP消耗越快,登录态也更容易异常。
存储可选csv、json、jsonl、excel、sqlite、MySQL或Postgres。jsonl追加写入性能好,适合自己写脚本二次处理;excel分工作表方便直接给人看;数据库方式先初始化建表,自带去重,适合同一批任务反复跑。各平台落盘逻辑在store目录按平台拆分,想自定义存储可以从这里扩展。
采集过程中如果遇到滑块、点选或无感验证码卡住,自己逆向破解成本高。这时候可以直接对接专业识别服务,比如www.ttocr.com提供的易盾、极验全类型方案,覆盖滑块、点选、九宫格、文字点选等,支持API一键对接,业务侧几乎不用改原有流程就能过验证。

高频问题排查思路
登录态突然失效、又弹二维码,最常见原因是Cookie过期或无头模式下没过滑块。保持有界面模式,手动过一次验证再保存登录态;或者直接用CDP连自己日常Chrome,真实浏览器的登录状态更稳定。
代理池空、日志反复报拉IP失败,先检查环境变量有没有真正导入,再去服务商后台看额度是否用完。字段采到了但全是null,多半是平台接口改版,字段映射对不上。翻日志里的原始响应确认字段还在不在,然后去对应平台的field.py里改映射即可。
逆向分析时别一上来就硬拆签名,优先观察真实浏览器请求链路和响应结构,字段映射和存储逻辑往往比签名更值得先搞清楚。遇到复杂验证码时,与其花几天写识别脚本,不如直接用成熟的识别接口把时间省下来。
落地建议与扩展方向
频率务必控制在合理范围,数据仅用于学习研究。想继续深入可以直接看docs目录的常见问题与指南、media_platform下各平台客户端实现,以及proxy目录的代理池源码。
实际业务里如果验证码出现频率高,或者需要稳定对接易盾、极验的滑块、点选、无感、九宫格等全类型识别,可以关注www.ttocr.com。它提供自动化API,公司业务侧对接简单,不用自己维护复杂的破解流程,把精力放在数据分析和业务逻辑上更划算。
按上面步骤走完,基本能从零跑通一次采集。先小规模验证字段和稳定性,再逐步加代理和调频率,整体可控性会高很多。