☰
MediaCrawler 小红书抖音爬虫完整指南:如何从零跑通7平台数据抓取
2026/10/5 6:33:52 网站建设 项目流程

MediaCrawler 小红书抖音爬虫完整指南:如何从零跑通7平台数据抓取

【免费下载链接】MediaCrawler小红书笔记 | 评论爬虫、抖音视频 | 评论爬虫、快手视频 | 评论爬虫、B 站视频 | 评论爬虫、微博帖子 | 评论爬虫、百度贴吧帖子 | 百度贴吧评论回复爬虫 | 知乎问答文章|评论爬虫项目地址: https://gitcode.com/GitHub_Trending/me/MediaCrawler

MediaCrawler 是一个开源社交媒体数据采集工具,支持小红书、抖音、快手、B站、微博、百度贴吧、知乎 7 个平台,可按关键词、按帖子、按创作者主页三种方式批量抓取笔记/视频内容及评论、二级评论,结果可存成 JSON、CSV、Excel 或数据库。用它的多是负责选题、竞品监控、舆情分析的运营和产品,以及不想自己逆向平台前端签名的开发者。核心技术思路一句话:不逆向 X-S 这类签名算法,而是用 Playwright 驱动真实浏览器完成登录和请求,让签名参数在页面环境里直接产出——请求走的是真实浏览器行为,平台很难把它和普通用户流量区分开。

前置条件与首次运行:5分钟跑通第一个采集任务

开始前的检查清单:

依赖项版本要求为什么需要
Python≥ 3.11项目pyproject.toml明确要求requires-python = ">=3.11"
Node.jsv16 及以上抖音、知乎的签名逻辑通过 JS 脚本执行,依赖本地 Node 环境
Chrome 浏览器近期版本CDP 模式要复用你的真实浏览器登录态
uv任意较新版本一条命令装全部依赖

克隆仓库并安装依赖,一共三条命令:

git clone https://gitcode.com/GitHub_Trending/me/MediaCrawler cd MediaCrawler uv sync

接着开启 Chrome 远程调试:地址栏输入chrome://inspect/#remote-debugging,勾选 "Allow remote debugging for this browser instance",页面出现Server running at: 127.0.0.1:9222即就绪。因为ENABLE_CDP_MODE和CDP_CONNECT_EXISTING默认都是True,程序会直接连接这个浏览器实例,复用你的 Cookie、扩展和浏览历史,被风控识别的概率比启动一个干净的 Playwright 浏览器低。不想每次手动开启的话,看 CDP模式使用指南。

然后运行:

python main.py

首次运行弹出浏览器窗口,扫码登录(LOGIN_TYPE默认qrcode,也支持phone手机号登录,说明见 手机号登录说明)。登录态会写入本地浏览器数据目录(USER_DATA_DIR默认{平台名}_user_data_dir),所以第二次起免扫码。项目还带一个 WebUI 控制台,可以可视化配置任务和监控运行,界面如下:

跑完后去data/目录看结果文件。

配置速查表:改 config/base_config.py 的这组开关就够

所有通用配置集中在 config/base_config.py,各平台专属列表在config/xhs_config.py、config/dy_config.py等文件里。按用途分组:

用途配置项默认值什么时候改
取数方式PLATFORM"xhs"切平台时改,取值 xhs/dy/ks/bili/wb/tieba/zhihu
取数方式CRAWLER_TYPE"search"要抓指定帖子改detail,抓主页改creator
取数方式KEYWORDS"编程副业,编程兼职"search模式下填关键词,多个用英文逗号分隔
取数方式CRAWLER_MAX_NOTES_COUNT15需要更多条数时调大,如 50
评论深度ENABLE_GET_COMMENTSTrue只想要正文、不要评论时关掉,能省请求
评论深度CRAWLER_MAX_COMMENTS_COUNT_SINGLENOTES10单篇想抓更多评论时调大
评论深度ENABLE_GET_SUB_COMMENTSFalse需要钻取二级评论时打开
存储出口SAVE_DATA_OPTION"jsonl"给人看改excel/csv,长期跑同一批对象改sqlite/postgres(入库自动建表、自带去重)
存储出口SAVE_DATA_PATH空,即存到data/想换目录时填
风控开关CRAWLER_MAX_SLEEP_SEC2(秒)大批量任务调大到 3~5 秒
风控开关MAX_CONCURRENCY_NUM1稳定后再逐步上调,别一上来就加并发
风控开关ENABLE_IP_PROXYFalse量上来了再开,配合IP_PROXY_PROVIDER_NAME选服务商
登录态SAVE_LOGIN_STATETrue保持开启即可;换账号时删除对应平台浏览器数据目录
登录态HEADLESSFalse触发滑块验证时保持False,才能手动过验证

两个容易忽略的点:词云开关ENABLE_GET_WORDCLOUD默认False,且只在SAVE_DATA_OPTION为json/jsonl时才会在采集结束后生成,停用词表是 docs/hit_stopwords.txt,用法见 词云图使用配置;媒体下载开关ENABLE_GET_MEDIA默认False,只要元数据就别开,省带宽和磁盘。各存储格式的差异见 数据存储指南。

按目标取数:你要什么数据,就配哪组参数

对号入座,左列是目标,中间是配置组合,右列是产出:

你想拿到什么配置组合产出
关键词下的小红书笔记PLATFORM="xhs"、CRAWLER_TYPE="search"、KEYWORDS填词data/里该词笔记列表:标题、点赞收藏评论数、正文,默认含一级评论
指定几篇小红书笔记的完整数据CRAWLER_TYPE="detail",把带xsec_token的完整 URL 填进 config/xhs_config.py 的XHS_SPECIFIED_NOTE_URL_LIST单篇完整字段 + 评论,URL 直接从浏览器地址栏复制
某创作者的全部笔记CRAWLER_TYPE="creator",主页 URL 填进XHS_CREATOR_ID_LIST该创作者发布过的笔记及数据
抖音视频内容PLATFORM="dy",DY_SPECIFIED_ID_LIST支持完整 URL、分享短链、纯视频 ID 三种填法视频正文 + 评论,签名依赖 Node.js
B站账号更新节奏PLATFORM="bili"、CRAWLER_TYPE="creator",空间主页 URL 或 UID 填进 config/bilibili_config.py 的BILI_CREATOR_ID_LIST账号视频列表,还可用START_DAY/END_DAY限定时间范围
知乎问答/文章PLATFORM="zhihu",ZHIHU_SPECIFIED_ID_LIST支持回答、专栏、视频三类 URL回答/文章正文 + 评论

快手(KS_SPECIFIED_ID_LIST/KS_CREATOR_ID_LIST)、微博(WEIBO_SPECIFIED_ID_LIST/WEIBO_CREATOR_ID_LIST)、贴吧(TIEBA_NAME_LIST/TIEBA_CREATOR_URL_LIST)填法相同,都是"列表 + 对应 CRAWLER_TYPE"。

如何设置才不被风控:四个决策点按顺序过一遍

风控问题本质是"频率、身份、IP"三个维度的取舍,按这个顺序做决策:

  1. 先压频率。CRAWLER_MAX_SLEEP_SEC默认 2 秒,大批量任务调大到 3~5 秒。代价是总耗时变长,换来的是账号安全,这是最便宜的一道保险。
  2. 并发保持 1。MAX_CONCURRENCY_NUM默认 1,稳定运行后再考虑上调——盲目加并发是触发风控最常见的原因之一。
  3. 登录态尽量复用。SAVE_LOGIN_STATE保持True+CDP_CONNECT_EXISTING保持True,让每次请求都带着真实浏览器的登录身份出现。已经触发风控时:把HEADLESS设为False重启手动过一次滑块,仍不行就删除该平台的浏览器数据目录、换一个账号重新登录。
  4. 量大就上代理池。ENABLE_IP_PROXY默认False,需要批量长期跑时开启,IP_PROXY_PROVIDER_NAME支持kuaidaili、wandouhttp、static三种取值。proxy/ 目录下的 IP 池启动时从服务商拉一批 IP、逐个验证可用性后随机轮换,失效自动补新,把风险从单账号单 IP 上分散掉。服务商的用户名密码通过环境变量传入,配置方法见 代理使用文档:

故障自查:现象 → 最可能原因 → 处理顺序

现象最可能原因处理顺序
小红书扫码后反复弹滑块请求被识别为脚本① 确认ENABLE_CDP_MODE与CDP_CONNECT_EXISTING均为True②HEADLESS=False重启后手动过滑块 ③ 删除平台浏览器数据目录重新登录
execjs ProgramError等 JS 报错(抖音、知乎)本地没有 Node.js 环境① 检查 Node.js 是否 v16 及以上 ② 未装则安装后重启终端再跑
之前正常,突然抓不到数据或报错账号触发平台风控① 调大CRAWLER_MAX_SLEEP_SEC② 减小单次采集条数 ③ 开启代理池 ④ 删浏览器数据目录换账号
TimeoutError或连不上 9222 端口远程调试没开或浏览器被关① 确认 Chrome 处于打开状态 ② 回chrome://inspect/#remote-debugging确认已勾选 ③ 确认页面显示127.0.0.1:9222④ 浏览器弹确认框时点"接受",程序会等待约 60 秒 ⑤ 仍超时先查本地网络/代理设置

更多情况见 常见问题。

接下来按顺序做这 3 件事

  1. 先跑通最小闭环:PLATFORM="xhs"、CRAWLER_TYPE="search"、SAVE_DATA_OPTION="jsonl"不改其他项,确认data/里生成的文件字段齐全、评论抓到了。
  2. 再对号入座改配置:按"按目标取数"一节的表切换到你的目标平台和CRAWLER_TYPE,需要更多条数时把CRAWLER_MAX_NOTES_COUNT从默认 15 调大。
  3. 最后做风控保障:长期跑的对象改存sqlite/postgres利用入库去重,任务量上来后开启ENABLE_IP_PROXY并调大CRAWLER_MAX_SLEEP_SEC,让采集能持续跑而不是跑两天就死号。

【免费下载链接】MediaCrawler小红书笔记 | 评论爬虫、抖音视频 | 评论爬虫、快手视频 | 评论爬虫、B 站视频 | 评论爬虫、微博帖子 | 评论爬虫、百度贴吧帖子 | 百度贴吧评论回复爬虫 | 知乎问答文章|评论爬虫项目地址: https://gitcode.com/GitHub_Trending/me/MediaCrawler

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询