如何用MediaCrawler采齐7个平台的数据并全程可追溯
【免费下载链接】MediaCrawler小红书笔记 | 评论爬虫、抖音视频 | 评论爬虫、快手视频 | 评论爬虫、B 站视频 | 评论爬虫、微博帖子 | 评论爬虫、百度贴吧帖子 | 百度贴吧评论回复爬虫 | 知乎问答文章|评论爬虫项目地址: https://gitcode.com/GitHub_Trending/me/MediaCrawler
多平台的数据为什么采不全、对不上
MediaCrawler是一个面向多平台数据采集的开源爬虫框架。从小红书、抖音、B站分别拉数据,常常拿到三种文件、三套字段,对不上账。这篇文章按安装、首次采集、平台挑选、存储落地的顺序走一遍。
三分钟跑通第一次采集:开源爬虫框架最短路径
前置条件:装好 uv 和 Node.js ≥16.0.0(抖音、知乎的签名脚本要跑在 Node 上)。然后三条命令:
git clone https://gitcode.com/GitHub_Trending/me/MediaCrawler cd MediaCrawler && uv sync && uv run playwright install uv run main.py --platform xhs --lt qrcode --type search第二条装 Python 依赖和浏览器驱动,第三条启动关键词搜索模式:手机扫码后浏览器开始访问页面,数据默认以 jsonl 落进 data/ 目录。不想碰命令行的话,启动 api/ 服务后打开 WebUI,日志窗口会实时滚动采集进度。
参数都在 config/base_config.py 里:KEYWORDS 填搜索词,CRAWLER_MAX_NOTES_COUNT 控制采集量(默认 15 条),CRAWLER_TYPE 在 search、detail、creator 三种模式间切换。
Playwright 爬虫、代理池与追踪ID:全程追踪怎么做的
链路靠三件事撑住。
浏览器自动化:MediaCrawler 走 Playwright 爬虫的路线——登录并保存登录态,再在页面里执行 JS 表达式取签名参数,不用逆向加密算法。base/base_crawler.py 定义爬虫、登录、存储、客户端四个抽象类,7 个平台各填实现。
代理池:被限流时换出口 IP。proxy/proxy_ip_pool.py 从供应商接口拉 IP、逐个验证、存入 Redis,请求失败就换下一个。内置 kuaidaili、wandouhttp、static(自备静态代理)三种来源。
追踪 ID 与重试:小红书签名会给每个请求生成 16 位随机 trace id,请求链路事后能查;客户端层失败会自动重试 3 次。

7个平台怎么挑:一平台一句话
7 个平台实现都在 media_platform/ 目录下,挑选建议:
| 平台 | 代号 | 能拿到的数据 | 一句话特点 |
|---|---|---|---|
| 小红书 | xhs | 笔记、评论、词云 | 签名与追踪ID最完整,支持海外版 |
| 抖音 | dy | 视频、评论、创作者 | 签名依赖 Node 环境,扫码可能出手机验证 |
| 快手 | ks | 视频、评论 | 走 GraphQL 接口 |
| B站 | bili | 视频、UP动态、评论 | 支持词云生成 |
| 微博 | wb | 帖子、评论 | 唯一支持下载图片视频资源 |
| 贴吧 | tieba | 帖子、二级回复 | 有回复树 |
| 知乎 | zhihu | 问答、文章、回答 | 同样需要 Node 环境 |
做小红书数据采集或抖音数据抓取就从前两行开始;盯社区舆情看贴吧和微博。search、detail、creator 三种模式靠 --type 切换,不用改代码。
存储格式怎么选、数据长什么样
SAVE_DATA_OPTION 有 8 个取值:csv、json、jsonl、excel、sqlite、mysql、postgres、mongodb。默认 jsonl 逐行追加,写入性能最好;临时看数用 excel(内容、评论、创作者 3 张表);长期使用建议 sqlite,靠唯一索引去重:
uv run main.py --init_db sqlite uv run main.py --platform xhs --lt qrcode --type search --save_data_option sqlite表结构定义在 database/models.py,每个平台都是内容、评论、创作者 3 张表。值得留意的字段:add_ts 与 last_modify_ts 记录首次采集和最后更新时间,source_keyword 记下数据来自哪个关键词,creator_hash 是创作者匿名哈希,昵称做了脱敏,这个教学版不落库任何可识别真实用户的字段。
采集最常被问的3个坑:登录态、限流、重复数据
登录态失效:SAVE_LOGIN_STATE 默认把浏览器目录持久化,重跑不用重新扫码;状态真坏了就删掉对应平台的 user_data_dir 目录再扫一次。小红书扫码弹滑块时,配置默认非无头模式,直接在浏览器里手动过掉。
限流:请求间隔默认 2 秒、并发 1,别猛调并发;量上来就开代理池(ENABLE_IP_PROXY=True),让池子负责换 IP。
重复数据:文件类格式都是追加写,同一关键词跑两遍就重复;换 sqlite 或 mysql 直接解决——内容表对作品 ID 有唯一索引,冲突时更新而不是再插一条。
拿到数据之后:先跑一个平台
登录、采集、存储的管道已经铺好。挑一个最熟的先把 search 模式跑通,翻一遍 data/ 里的 jsonl 确认字段,再谈存储升级。
【免费下载链接】MediaCrawler小红书笔记 | 评论爬虫、抖音视频 | 评论爬虫、快手视频 | 评论爬虫、B 站视频 | 评论爬虫、微博帖子 | 评论爬虫、百度贴吧帖子 | 百度贴吧评论回复爬虫 | 知乎问答文章|评论爬虫项目地址: https://gitcode.com/GitHub_Trending/me/MediaCrawler
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考