news 2026/8/15 16:08:04

MediaCrawler爬虫框架实战手册:5步跑通小红书、抖音、B站、快手、微博的数据采集

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MediaCrawler爬虫框架实战手册:5步跑通小红书、抖音、B站、快手、微博的数据采集

MediaCrawler爬虫框架实战手册:5步跑通小红书、抖音、B站、快手、微博的数据采集

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

做内容运营的林姐,凌晨一点还在对着浏览器一页页翻评论,复制、粘贴、整理进Excel——这是她本周第三次为了一份竞品调研加班到深夜。如果你也曾为"采集社交媒体数据"这件事熬过夜,那这篇关于MediaCrawler爬虫框架的文章,就是为你准备的。

MediaCrawler 是一套开源的社交媒体数据采集工具,用 Python 写成,覆盖小红书、抖音、快手、B站、微博五大平台,能抓取视频、图片、评论、点赞、转发等数据。它最大的价值不是"能爬",而是让一个非逆向高手也能在几小时内完成从配置到出数据的完整流程。

一、先讲清楚它凭什么"好上手":不撬锁,而是带钥匙进门

市面上的爬虫大多走"逆向"路线——把平台前端的加密 JS 抠出来,在本地复现一遍。这条路又累又脆:平台一改版,加密算法一换,代码就废了。

MediaCrawler 换了个思路。它基于 Playwright 搭桥,先让你像正常用户一样扫码登录,把登录成功后的浏览器上下文保存下来;之后的每一次请求,都借这个"已登录的身份"去执行 JS 表达式、拿到加密参数。

打个比方:别人在撬锁,它只是礼貌地敲门——钥匙是你自己手机扫出来的,门是平台自己开的。这就是它代码里libs/stealth.min.js(去除浏览器自动化特征)和SAVE_LOGIN_STATE(保存登录状态)存在的意义。把最难的逆向环节绕开,难度自然降了一个量级。

二、这套爬虫框架最值钱的,其实是这两件事

1. 一套代码,五个平台

打开media_platform/目录你会发现,五个平台的实现结构几乎一样:client.py管 API 请求、core.py管爬取逻辑、login.py管登录、field.py管字段定义。它们全部继承自base/base_crawler.py里的抽象基类,再通过main.py里的工厂类按平台名一键实例化。

这意味着什么?你只需要改一个命令行参数,就能在五个平台之间无缝切换。学透一个平台,等于会了五个。

2. 内置代理IP池,专治"爬着爬着就封号"

大批量采集最怕两件事:IP 被封、账号被风控。MediaCrawler 的proxy/目录就是为这个问题设计的。它内置了从代理服务商拉取 IP、存入 Redis、维护 IP 池、按需取用的一整条链路:

MediaCrawler爬虫框架的代理IP池管理流程图

代理IP池的完整工作链路:启动时判断是否开启代理,拉取、缓存、池化、分发,每一步都有据可查。

具体到配置,代理密钥通过环境变量管理,不会硬编码进代码里——你在proxy/proxy_ip_provider.py里看到的就是这样:

代理密钥用os.getenv读取,既安全又方便换服务商。

而 IP 的提取、数量、时长、协议类型,都可以在代理服务商的后台按需生成,再填进配置:

在服务商后台生成带密钥的 API 链接,拿到的 IP 会自动进入 MediaCrawler 的代理池。

如果你只是小规模采集,把ENABLE_IP_PROXY保持为False也能正常跑;一旦要批量上量,再打开它。

三、实战演练:从零开始抓一轮"露营"相关的小红书笔记

空谈不如动手,我们完整走一遍流程。

第1步:准备环境(约5分钟)

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 pip3 install -r requirements.txt playwright install

小提示:如果你计划爬抖音,记得先装 Node.js(v16.8.0 左右),抖音的签名计算依赖它。具体见docs/常见问题.md

第2步:改两行配置

打开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

CRAWLER_MAX_NOTES_COUNT = 20控制这次一共抓多少条,MAX_CONCURRENCY_NUM = 4控制并发数,先保持默认即可。

第3步:扫码登录,一行命令开跑

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

浏览器会自动弹出,用小红书 App 扫码登录。登录态会被缓存到browser_data/目录,下次启动直接复用,不用再扫。

第4步:数据落地

程序跑完后,data/目录下会生成按平台命名的 JSON/CSV 文件。如果想把数据入库,把SAVE_DATA_OPTION改成db,再到config/db_config.py填好 MySQL 或 PostgreSQL 连接信息即可,项目自带 ORM,建表不用你操心。

到这里,第一批数据已经到手了。整个过程你只写了两行配置、跑了一条命令。

四、进阶:几个多数人不知道的隐藏细节

  • 评论区也能抓:默认不抓评论,把ENABLE_GET_COMMENTS改成True,笔记连同评论一起落地。做舆情分析的这一步基本是必开项。
  • 指定内容爬取:不想用关键词,直接把笔记/视频 ID 填进各平台的*_SPECIFIED_ID_LIST,再用--type detail跑,就能精确抓某几条内容。B 站还单独支持video_download模式,可以真正把视频文件下载下来。
  • 无头模式省资源HEADLESS = True时不弹浏览器窗口,适合挂服务器跑;遇到小红书滑块验证过不去时,把它改成False手动过一下验证码再关。
  • 创作者主页采集:小红书支持填XHS_CREATOR_ID_LIST指定博主,用--type creator抓某个账号的全部笔记,这是调研竞品账号的利器。
  • 抖音的滑块验证tools/slider_util.py里模拟了人类拖动滑块的轨迹曲线(easing.py),这条曲线是模拟人手的"加速-减速-回弹"节奏写的,不是简单直线,细节拉满。

五、避坑问答:踩过的坑,替你提前填平

Q:跑了一会儿突然没数据了,是代码坏了吗?A:大概率是账号触发了平台风控。别头铁,降低并发、放慢节奏、开代理池,且务必控制总量,别把平台惹毛了。

Q:想换一个登录账号怎么办?A:删掉项目根目录下的browser_data/文件夹再重跑即可。

Q:报错Timeout 30000ms exceededA:先检查网络环境——这类超时八成是没开代理、网络不通畅导致的,跟代码关系不大。

Q:execjs报语法错误?A:抖音场景专属问题,装好 Node.js 就解决。

更多历史问题和排查思路,见docs/常见问题.md;想深入理解模块划分,可以翻docs/项目代码结构.md;手机号短信登录的完整配置(含短信转发器 + 内网穿透)在docs/手机号登录说明.md

六、写在最后

MediaCrawler 不复杂:一个配置文件、一条命令,五个平台的数据就能源源不断落到你手里。它把逆向的门槛砍掉,把代理池、登录缓存、滑块验证这些脏活累活都封装好了,剩下的就是你去想清楚——拿到数据之后,要解决什么问题。

如果你想交流踩坑经验、第一时间获取平台更新应对方案,欢迎扫码进群,群里都是真在用的人:

最后必须提醒一句:数据采集有边界。请仅将本项目用于学习与研究,遵守相关法律法规和各平台的服务条款,尊重内容创作者与用户的隐私。工具本身没有立场,怎么用,取决于你。

下一步行动:克隆项目 → 装依赖 → 改关键词 → 跑通第一条数据。然后,去 star 一下这个仓库,让更多需要它的人能找到它。

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/15 16:02:42

PyCharm虚拟环境与包管理全攻略:从pip安装到项目依赖管理

1. 项目概述:为什么Pycharm是管理Python库的利器 如果你刚开始学Python,或者从其他编辑器(比如VS Code、Jupyter Notebook)转过来,第一次在Pycharm里看到“安装第三方库”这个操作,可能会有点懵。命令行里…

作者头像 李华
网站建设 2026/8/15 16:02:35

IntelliJ IDEA 2018.3 本地授权服务器部署与激活原理深度解析

1. 项目概述:一个老牌IDE的“续命”之旅作为一名在软件开发一线摸爬滚打了十多年的老码农,我深知一个趁手的集成开发环境(IDE)对工作效率和心情有多重要。IntelliJ IDEA,尤其是2018.3这个版本,对于很多老项…

作者头像 李华
网站建设 2026/8/15 16:02:22

GEO搜索优化科普:正规地域流量分发与内容运营指南

在内容分发越来越精细化的时代,搜索流量不再只看内容质量,更看重场景匹配度与地域适配性。很多原创内容数据普通、搜索曝光薄弱、同城流量无法起量,核心原因是不了解平台 GEO 地域分发机制。本文以纯科普、合规、长效运营角度,详细…

作者头像 李华
网站建设 2026/8/15 15:52:41

RabbitMQ 全套复盘 + Nacos+ES+MyBatis-Plus 梳理

RabbitMQ 消息队列(异步通信、可靠性全套解决方案)在短信项目里:上万条批量营销短信不会直接同步调用第三方通道,而是先丢进 MQ,消费者慢慢消费,防止瞬间流量打垮服务。RabbitMQ 核心组成组件1.生产者 Prod…

作者头像 李华