MediaCrawler 是一个功能强大的多平台自媒体数据采集工具,支持小红书、抖音、快手、B站、微博、贴吧、知乎等主流平台的公开信息抓取。
MediaCrawler基于 Playwright 浏览器自动化框架登录保存登录态,无需 JS 逆向,利用保留登录态的浏览器上下文环境,通过 JS 表达式获取签名参数。
不同平台在各项功能上的支持情况如下:
平台 | 关键词搜索 | 指定帖子ID爬取 | 二级评论 | 指定创作者主页 | 登录态缓存 | IP代理池 | 生成评论词云图 |
---|---|---|---|---|---|---|---|
小红书 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
抖音 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
快手 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
B站 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
微博 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
贴吧 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
知乎 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
MediaCrawlerPro断点续爬功能(重点特性),多账号 + IP代理池支持(重点特性),去除 Playwright 依赖,使用更简单,完整 Linux 环境支持。
MediaCrawlerPro代码重构优化,更易读易维护(解耦 JS 签名逻辑),企业级代码质量,适合构建大型爬虫项目,完美架构设计,高扩展性,源码学习价值更大。
MediaCrawlerPro支持自媒体视频下载器桌面端(适合学习全栈开发),多平台首页信息流推荐(HomeFeed),基于自媒体平台的AI Agent正在开发中。
进行下一步操作前,确保电脑已安装 uv,安装可参考 uv 官方安装指南。
验证安装:终端输入命令 uv --version
,正常显示版本号即安装成功。
推荐理由:uv 是目前较强的 Python 包管理工具,速度快、依赖解析准确。
创建并激活 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,可前往官网下载安装,下载地址 https://nodejs.org/en/download/
,版本要求:>= 16.0.0。
# 进入项目目录
cd MediaCrawler
# 使用 uv sync 命令来保证 python 版本和相关依赖包的一致性
uv sync
# 安装浏览器驱动
uv run playwright install
MediaCrawler 目前已支持使用 playwright 连接本地的 Chrome 浏览器,能解决一些因 Webdriver 导致的问题。目前开放了 xhs
和 dy
这两个使用 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
# 项目默认没有开启评论爬取模式,如需评论可在 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/
目录下)。
• 问题:爬取抖音和知乎报错: 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 版本,一直下一步即可。
• 问题:小红书扫码登录成功后,浏览器一直在验证滑块,无法登录?
• 解决:这种情况一般是因为使用 playwright 浏览器驱动被识别出来,尝试删除项目目录下的 brower_data
文件夹,重新走登录流程。
• 问题:可以指定关键词爬取吗?
• 解决:在 config/base_config.py 中 KEYWORDS 参数用于控制需要爬取的关键词。
• 问题:可以指定帖子爬取吗?
• 解决:在 config/base_config.py 中 XHS_SPECIFIED_ID_LIST 参数用于控制需要指定爬取的帖子 ID 列表。
• 问题:刚开始能爬取数据,过一段时间就失效了?
• 解决:出现这种情况多半是由于账号触发了平台风控机制,请勿大规模对平台进行爬虫,影响平台。
• 问题:如何更换登录账号?
• 解决:删除项目根目录下的 brower_data/ 文件夹即可。
• 问题:报错 playwright._impl._api_types.TimeoutError: Timeout 30000ms exceeded.
• 解决:出现这种情况检查下是否开了梯子。
• 问题:小红书扫码登录成功后如何手动验证?
• 解决:打开 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
按格式添加自定义词组即可。