科学工具
科学工具让世界更美好
让世界更美好

小红书笔记、抖音快手B站、微博百度贴吧帖子知乎问答文章评论等自媒体数据采集工具 MediaCrawler 使用手册小红书笔记、抖音快手B站、微博百度贴吧帖子知乎问答文章评论等自媒体数据采集工具 MediaCrawler 使用手册

MediaCrawler 是一个功能强大的多平台自媒体数据采集工具,支持小红书、抖音、快手、B站、微博、贴吧、知乎等主流平台的公开信息抓取。

MediaCrawler基于 Playwright 浏览器自动化框架登录保存登录态,无需 JS 逆向,利用保留登录态的浏览器上下文环境,通过 JS 表达式获取签名参数。

不同平台在各项功能上的支持情况如下:

平台 关键词搜索 指定帖子ID爬取 二级评论 指定创作者主页 登录态缓存 IP代理池 生成评论词云图
小红书
抖音
快手
B站
微博
贴吧
知乎

MediaCrawlerPro断点续爬功能(重点特性),多账号 + IP代理池支持(重点特性),去除 Playwright 依赖,使用更简单,完整 Linux 环境支持。

MediaCrawlerPro代码重构优化,更易读易维护(解耦 JS 签名逻辑),企业级代码质量,适合构建大型爬虫项目,完美架构设计,高扩展性,源码学习价值更大。

MediaCrawlerPro支持自媒体视频下载器桌面端(适合学习全栈开发),多平台首页信息流推荐(HomeFeed),基于自媒体平台的AI Agent正在开发中。

MediaCrawler 安装和部署

前置依赖

uv 安装(推荐)

进行下一步操作前,确保电脑已安装 uv,安装可参考 uv 官方安装指南。

验证安装:终端输入命令 uv --version,正常显示版本号即安装成功。

推荐理由:uv 是目前较强的 Python 包管理工具,速度快、依赖解析准确。

使用 Python 原生 venv 管理环境(不推荐)

创建并激活 Python 虚拟环境:

如果爬取抖音和知乎,需要提前安装 nodejs 环境,版本大于等于 16 即可。

# 进入项目根目录
cd MediaCrawler
# 创建虚拟环境
# 我的 python 版本是:3.9.6,requirements.txt 中的库是基于这个版本的
# 如果是其他 python 版本,可能 requirements.txt 中的库不兼容,需自行解决
python -m venv venv

# macOS & Linux 激活虚拟环境
source venv/bin/activate

# Windows 激活虚拟环境
venv\Scripts\activate

安装依赖库:

pip install -r requirements.txt

安装 playwright 浏览器驱动:

playwright install

Node.js 安装

项目依赖 Node.js,可前往官网下载安装,下载地址 https://nodejs.org/en/download/,版本要求:>= 16.0.0。

Python 包安装

# 进入项目目录
cd MediaCrawler

# 使用 uv sync 命令来保证 python 版本和相关依赖包的一致性
uv sync

浏览器驱动安装

# 安装浏览器驱动
uv run playwright install

MediaCrawler 目前已支持使用 playwright 连接本地的 Chrome 浏览器,能解决一些因 Webdriver 导致的问题。目前开放了 xhsdy 这两个使用 CDP 的方式连接本地浏览器,如有需要,可查看 config/base_config.py 中的配置项。

运行爬虫程序

原生环境运行

# 项目默认没有开启评论爬取模式,如需评论可在 config/base_config.py 中的 ENABLE_GET_COMMENTS 变量修改
# 一些其他支持项,也可以在 config/base_config.py 查看功能,写的有中文注释
# 从配置文件中读取关键词搜索相关的帖子并爬取帖子信息与评论
python main.py --platform xhs --lt qrcode --type search

# 从配置文件中读取指定的帖子ID列表获取指定帖子的信息与评论信息
python main.py --platform xhs --lt qrcode --type detail

# 打开对应APP扫二维码登录
# 其他平台爬虫使用示例,执行下面的命令查看
python main.py --help

uv 环境运行

# 项目默认没有开启评论爬取模式,如需评论可在 config/base_config.py 中的 ENABLE_GET_COMMENTS 变量修改
# 一些其他支持项,也可以在 config/base_config.py 查看功能,写的有中文注释
# 从配置文件中读取关键词搜索相关的帖子并爬取帖子信息与评论
uv run main.py --platform xhs --lt qrcode --type search

# 从配置文件中读取指定的帖子ID列表获取指定帖子的信息与评论信息
uv run main.py --platform xhs --lt qrcode --type detail

# 打开对应APP扫二维码登录
# 其他平台爬虫使用示例,执行下面的命令查看
uv run main.py --help

数据保存

支持多种数据存储方式:

• MySQL 数据库:支持关系型数据库 MySQL 中保存(需要提前创建数据库),执行 python db.py 初始化数据库表结构(只在首次执行)。

• CSV 文件:支持保存到 CSV 中(data/ 目录下)。

• JSON 文件:支持保存到 JSON 中(data/ 目录下)。

常见问题

缺少 node 环境导致的问题

• 问题:爬取抖音和知乎报错: execjs._exceptions.ProgramError: SyntaxError: 缺少 ';'

• 解决:该错误为缺少 nodejs 环境,安装 nodejs 环境能解决,版本大于等于 v16。

• 问题:使用 Cookie 爬取抖音报错: execjs._exceptions.ProgramError: TypeError: Cannot read property 'JS_MD5_NO_COMMON_JS' of null

• 解决:windows 电脑去网站下载 https://nodejs.org/en/blog/release/v16.8.0 Windows 64-bit Installer 版本,一直下一步即可。

xhs 登录出现滑块一直验证不通过问题

• 问题:小红书扫码登录成功后,浏览器一直在验证滑块,无法登录?

• 解决:这种情况一般是因为使用 playwright 浏览器驱动被识别出来,尝试删除项目目录下的 brower_data 文件夹,重新走登录流程。

如何指定关键词

• 问题:可以指定关键词爬取吗?

• 解决:在 config/base_config.py 中 KEYWORDS 参数用于控制需要爬取的关键词。

如何指定帖子

• 问题:可以指定帖子爬取吗?

• 解决:在 config/base_config.py 中 XHS_SPECIFIED_ID_LIST 参数用于控制需要指定爬取的帖子 ID 列表。

爬取失效

• 问题:刚开始能爬取数据,过一段时间就失效了?

• 解决:出现这种情况多半是由于账号触发了平台风控机制,请勿大规模对平台进行爬虫,影响平台。

如何更换另一个账号

• 问题:如何更换登录账号?

• 解决:删除项目根目录下的 brower_data/ 文件夹即可。

playwright 超时问题

• 问题:报错 playwright._impl._api_types.TimeoutError: Timeout 30000ms exceeded.

• 解决:出现这种情况检查下是否开了梯子。

如何配置 playwright 浏览器驱动过滑块验证

• 问题:小红书扫码登录成功后如何手动验证?

• 解决:打开 config/base_config.py 文件,找到 HEADLESS 配置项,将其设置为 False,此时重启项目,在浏览器中手动通过验证码。

词云图生成

• 问题:如何配置词云图的生成?

• 解决:打开 config/base_config.py 文件,找到 ENABLE_GET_WORDCLOUD 以及 ENABLE_GET_COMMENTS 两个配置项,将其都设为 True 就能使用该功能。

词云图添加禁用词和自定义词组

• 问题:如何给词云图添加禁用词和自定义词组?

• 解决:打开 docs/hit_stopwords.txt 输入禁用词(注意一个词语一行)。打开 config/base_config.py 文件找到 CUSTOM_WORDS 按格式添加自定义词组即可。