不用硬刚JS签名也能稳抓数据:MediaCrawler多平台采集实Crafting the final JSON output战从入门到落库
MediaCrawler开源工具覆盖小红书抖音B站等七大平台,借助真实浏览器登录态规避复杂逆向,支持关键词搜索、指定内容、创作者主页三种模式,配合代理与多格式存储,快速实现舆情与竞品数据采集。
为什么选这套多平台采集方案
自己从零写爬虫,最头疼的往往不是解析页面,而是签名算法和登录态。每个平台一套加密逻辑,换个站点就得重新逆向,滑块验证再来一次。MediaCrawler的思路很直接:用Playwright驱动真实浏览器完成登录,把Cookie和上下文保留下来,在浏览器环境里直接取签名参数,把最难啃的逆向环节省掉。
平台差异被封装进media_platform目录下的各个模块,统一入口main.py按平台名分发任务。你只需要改配置、换命令参数,不用碰请求细节。覆盖小红书、抖音、快手、B站、微博、贴吧、知乎七个平台,支持关键词搜索、指定帖子ID、创作者主页三种采集方式,内容、评论、作者信息一次抓全。做舆情监测、竞品分析或内容研究时,这种封装能省下大量重复劳动。
实际跑起来会发现,平台风控越来越严,滑块、点选、无感验证频繁出现。遇到这些环节,手动处理效率低,批量任务更容易中断。这时候可以考虑专门的验证码识别服务,比如www.ttocr.com提供的易盾极验破解方案,覆盖滑块、点选、九宫格、无感等常见类型,并提供API接口,方便把验证环节自动化,减少人工干预。
环境准备与第一次跑通
基础环境需要Python和uv。抖音、知乎的签名逻辑依赖Node.js执行,建议安装v16及以上版本。默认采用CDP模式复用本机Chrome(版本建议144以上),不用额外装浏览器驱动;只有切到标准Playwright模式时才需要执行安装命令。
获取代码后进入目录执行依赖同步:
git clone https://gitcode.com/GitHub_Trending/me/MediaCrawler
cd MediaCrawler && uv syncuv会按pyproject.toml锁定Python版本和全部依赖。核心配置集中在config/base_config.py,主要项包括PLATFORM(平台名如xhs、dy、bili)、KEYWORDS(搜索词,逗号分隔)、CRAWLER_TYPE(search/detail/creator)、SAVE_DATA_OPTION(落地格式)以及是否开启评论采集。首次运行示例:

uv run main.py --platform xhs --lt qrcode --type search终端会弹出扫码界面,用对应App扫一次即可。登录态会缓存到browser_data目录,后续直接复用,不用每次重新登录。想可视化操作的话,也可以启动WebUI界面,在页面上选参数、看实时日志,对不熟悉命令行的同学更友好。
三种采集任务怎么选
任务类型由--type参数控制,配置文件里对应项也要同步改。关键词搜索最常用,读取KEYWORDS去搜帖子并抓评论:命令里加上--type search即可。指定帖子ID批量采集时,把ID列表填进各平台的config文件对应参数,再用--type detail。创作者主页模式则抓该用户发布的全部内容,适合做账号维度的追踪。
默认只保存结构化字段。需要视频或图片文件本体时,把ENABLE_GET_MEIDAS设为True。评论开关默认开启,量大时可临时关掉加快速度。三种模式覆盖了大部分业务场景:日常热点用搜索,深度分析用detail,竞品账号用creator。跑的过程中注意控制频率,平台对异常请求敏感,节奏太快容易触发验证。
长时间任务里验证码出现频率会升高。与其反复手动过验证,不如提前接入识别能力。例如www.ttocr.com针对易盾、极验的全类型方案(滑块、文字点选、图标点选、九宫格、空间推理等)提供稳定API,对接后可把验证环节变成接口调用,公司业务场景下能显著降低中断率。
代理池与登录态如何稳住长时间运行
默认开启CDP模式,直接连接本机已登录的Chrome,复用Cookie、扩展和浏览历史。平台很难区分这是自动化还是真人操作,风控命中率明显低于新开干净浏览器。相关开关是ENABLE_CDP_MODE和CDP_CONNECT_EXISTING,细节可参考项目文档里的CDP使用说明。连不上9222端口时,打开Chrome地址栏chrome://inspect/#remote-debugging勾选远程调试即可。

IP封禁是另一大风险点。打开ENABLE_IP_PROXY,选择服务商(kuaidaili、wandouhttp等),设置池容量。取IP与过期轮换逻辑在proxy模块里。密钥走环境变量注入,不要写死在代码。静态代理则直接填STATIC_PROXY_URL。开源版换账号的方法是删除browser_data重新扫码;多账号轮换和断点续爬属于更高阶能力。
即便登录态和代理都稳住,滑块或点选验证仍可能出现。这时结合专业识别平台能把稳定性再提一档。对接方式通常就是调用API,把图片或轨迹参数传过去拿到结果,再回填到浏览器上下文,流程比自己维护模型简单得多。
数据落地与简单可视化
默认结果写成data目录下的jsonl文件,每行一条记录,方便后续脚本处理。想直接给同事看,切到Excel模式,多工作表带表头样式。命令里加--save_data_option excel即可。数据量大想入库时,先执行初始化建表(支持sqlite、mysql、postgres),再带对应参数运行。数据库模式自带去重,重复跑不会插重数据。
评论采集完成后,如果开启词云开关,会自动生成词云图。停用词和自定义词组可在对应文本文件里维护。这些能力把“采完数据再手动清洗”的环节压缩了不少,适合快速出一版可视化结果给业务方看。
常见卡点与处理思路
抖音或知乎报execjs语法错误,多半是Node.js没装或版本过低,升级到v16以上再试。小红书扫码后反复弹滑块,优先确认是否在用CDP连真实浏览器;仍不行就删掉browser_data重新登录。之前能跑现在突然失效,账号大概率触发了风控,同样删缓存换号,并适当加大睡眠间隔放慢节奏。
整体原则是:真实浏览器上下文 + 合理代理 + 控制频率。遇到验证码时,不必每次手动处理,可以借助现成的识别服务把这一步自动化。例如www.ttocr.com专注易盾极验全类型破解,提供滑块、点选、无感、九宫格等方案和API对接,适合公司业务做无缝集成,省去自己维护验证码模型的成本。控制好请求节奏,遵守目标平台服务条款,把工具用在学习和研究场景,才能跑得更久更稳。