Crawler之Tool:MediaCrawler的简介、安装和使用方法、案例应用之详细攻略

Crawler之Tool:MediaCrawler的简介、安装和使用方法、案例应用之详细攻略

目录

MediaCrawler的简介

1、特点

MediaCrawler的安装和使用方法

1、安装

[使用 uv 安装](#使用 uv 安装)

[配置 Chrome 与 CDP](#配置 Chrome 与 CDP)

[使用 Python 原生 venv](#使用 Python 原生 venv)

2、使用方法

关键词搜索并抓取内容与评论

[根据指定帖子 ID 获取详情](#根据指定帖子 ID 获取详情)

使用数据存储选项

[使用 WebUI](#使用 WebUI)

MediaCrawler的案例应用

案例一:小红书关键词搜索采集

[案例二:指定小红书帖子 ID 采集详情](#案例二:指定小红书帖子 ID 采集详情)

案例三:跨平台执行同类采集任务

[案例四:SQLite 本地存储采集结果](#案例四:SQLite 本地存储采集结果)

[案例五:Excel 格式导出分析](#案例五:Excel 格式导出分析)

[案例六:使用 WebUI 完成可视化采集](#案例六:使用 WebUI 完成可视化采集)


MediaCrawler的简介

MediaCrawler 是一个多平台自媒体数据采集工具,项目 README 明确说明其支持小红书、抖音、快手、B 站、微博、贴吧、知乎等主流平台的公开信息抓取。项目架构文档进一步将其定位为一个多平台自媒体爬虫框架,采用 Python 异步编程实现,能够面向这些平台采集内容、评论和创作者信息,并通过统一的爬虫接口组织不同平台的实现。

在技术实现方面,项目以 Playwright 浏览器自动化为核心:通过浏览器环境登录并保存登录态,再利用保留登录态的浏览器上下文,通过 JavaScript 表达式获取签名参数。README 强调,这种方式不需要直接逆向复杂的加密算法。当前项目还提供 CDP 模式,用于连接已有 Chrome 浏览器并复用其登录状态、Cookie 和扩展;同时提供标准 Playwright 模式作为可切换方案。

在数据处理方面,MediaCrawler 提供多种存储后端,包括 CSV、JSON、JSONL、Excel、SQLite 和 MySQL;项目还提供 WebUI,可用于可视化配置爬虫参数、查看运行状态和日志、预览与导出数据。整体项目由 main.py、base、config、media_platform、store、api、webui 等目录和模块组成,使平台爬虫、配置、数据存储以及 Web 操作界面形成相对独立的组成部分。

Guthub地址https://github.com/NanmiCoder/MediaCrawler

1 、特点

|-----------------------------|-------------------------------------------------------------------------------------|
| 特点 | 详细说明 |
| 多平台支持 | 当前项目支持小红书、抖音、快手、B 站、微博、百度贴吧和知乎等平台;项目架构文档按平台给出了搜索、详情、创作者或答主等功能。 |
| 统一爬虫接口 | 项目架构文档指出,MediaCrawler 使用统一的爬虫接口支持 7 大主流平台,并在 media_platform/ 下按平台组织具体实现。 |
| Playwright 浏览器自动化 | 项目使用 Playwright 进行浏览器自动化登录并保存登录态,再通过浏览器上下文获取签名参数。 |
| CDP 模式 | 项目默认使用 CDP 模式连接用户已有 Chrome,可以复用已有登录状态、Cookie 和扩展;也可以通过配置关闭 CDP,切换到标准 Playwright 模式。 |
| 多种采集类型 | README 的功能表覆盖关键词搜索、指定帖子 ID 爬取、二级评论、指定创作者主页等能力。 |
| 登录态缓存 | 功能矩阵明确列出了登录态缓存能力,当前项目的 Chrome/CDP 工作方式也支持复用已有登录状态。 |
| IP 代理池 | README 的平台能力表将 IP 代理池列为功能项,并对各平台进行了支持标记。 |
| 评论词云 | 项目功能表包含生成评论词云图能力,相关平台均在表中标记支持。 |
| 异步高并发 | 项目架构文档明确说明采用基于 asyncio 的异步架构,用于实现并发爬取。 |
| 多种数据存储 | 支持 CSV、JSON、JSONL、Excel、SQLite 和 MySQL,项目还提供独立的数据存储和 Excel 导出文档。 |
| WebUI | 项目提供基于 Web 的可视化操作界面,可配置平台、登录方式、爬取类型,实时查看任务状态和日志,并进行数据预览与导出。 |
| Python 与 Node.js 配合 | 项目建议使用 Python 3.11,并要求 Node.js >=16.0.0;抖音和知乎等平台需要 Node.js 环境。 |

MediaCrawler的安装和使用方法

1、安装

使用 uv 安装

项目文档推荐使用 uv 管理依赖。进入项目后使用 uv sync 同步 Python 依赖;Python 版本建议使用 3.11,项目还要求 Node.js 版本 >=16.0.0。

复制代码
git clone https://github.com/NanmiCoder/MediaCrawler.git
cd MediaCrawler
uv sync

如果采用标准 Playwright 模式,需要安装浏览器驱动:

复制代码
uv run playwright install

项目当前默认采用 CDP 模式连接已有 Chrome,因此在这种默认模式下无需安装 Playwright 浏览器驱动。

配置 Chrome 与 CDP

项目 README 当前给出的推荐方式是使用 Chrome CDP。需要安装版本 >=144 的 Chrome,然后打开:

复制代码
chrome://inspect/#remote-debugging

勾选 Allow remote debugging for this browser instance,当页面显示:

复制代码
Server running at: 127.0.0.1:9222

即表示远程调试已就绪。运行爬虫后,Chrome 可能弹出确认对话框,需要点击"接受";项目说明程序会等待用户确认,60 秒内完成即可。

如果不使用 CDP,可在 config/base_config.py 中设置:

复制代码
ENABLE_CDP_MODE = False

从而切换到标准 Playwright 模式。

使用 Python 原生 venv

项目同时提供 Python 原生虚拟环境方案,不过项目文档将其标记为"不推荐"。以 Python 3.11 为例:

复制代码
cd MediaCrawler
python -m venv venv

macOS/Linux 激活:

复制代码
source venv/bin/activate

Windows 激活:

复制代码
venv\Scripts\activate

然后安装依赖和 Playwright 浏览器驱动:

复制代码
pip install -r requirements.txt
playwright install

如果使用抖音或知乎,项目文档要求提前准备 Node.js >=16。

2、使用方法

关键词搜索并抓取内容与评论

项目提供的基本命令为:

复制代码
uv run main.py --platform xhs --lt qrcode --type search

该命令从配置文件读取关键词搜索相关内容,并爬取帖子信息与评论。项目 README 的示例使用小红书平台代码 xhs 和二维码登录方式 qrcode。运行过程中按照项目提示打开对应 App 扫描二维码登录。

根据指定帖子 ID 获取详情

可以使用:

复制代码
uv run main.py --platform xhs --lt qrcode --type detail

该模式从配置文件读取指定的帖子 ID 列表,获取指定帖子的内容及评论信息。

项目默认没有开启评论爬取模式,如需启用评论,应在 config/base_config.py 中修改 ENABLE_GET_COMMENTS;其他功能开关也集中在该配置文件中,并提供中文注释。

查看其他平台命令

可以直接执行:

复制代码
uv run main.py --help

项目文档通过该命令查看其他平台爬虫的使用示例。

使用数据存储选项

项目支持 CSV、JSON、JSONL、Excel、SQLite 和 MySQL。

例如,项目文档给出了使用 SQLite 的命令:

复制代码
uv run main.py --platform xhs --lt qrcode --type search --save_data_option sqlite

使用 MySQL:

复制代码
uv run main.py --platform xhs --lt qrcode --type search --save_data_option db

SQLite 被项目文档列为轻量级、无需服务器的数据库方式;MySQL 则需要预先创建数据库。

使用 Excel 导出

项目单独提供了 Excel 导出指南。首先确保 openpyxl 已安装:

复制代码
uv sync

也可以直接:

复制代码
pip install openpyxl

然后在 config/base_config.py 中设置:

复制代码
SAVE_DATA_OPTION = "excel"

例如抓取小红书:

复制代码
uv run main.py --platform xhs --lt qrcode --type search

项目文档说明生成的 Excel 文件保存在 data/{platform}/ 目录,文件名格式为:

{platform}{crawler_type}{timestamp}.xlsx

例如:

xhs_search_20250128_143025.xlsx

也可以通过命令行直接指定:

复制代码
uv run main.py --platform xhs --lt qrcode --type search --save_data_option excel

使用 WebUI

MediaCrawler 提供 WebUI。开发调试模式需要同时启动 API 服务和前端 Vite 开发服务器:

复制代码
uv run uvicorn api.main:app --port 8080 --reload

另开终端:

复制代码
cd webui
npm install
npm run dev

前端默认运行在 5173 端口,并代理 /api 到 8080;启动后访问:

复制代码
http://localhost:5173/

即可进入 WebUI。项目首次打开会调用 /api/env/check 进行环境检测。

如果需要让 API 服务器直接提供前端静态资源,可以先构建:

复制代码
cd webui
npm install
npm run build

构建产物输出到 api/webui/,随后只需要启动:

复制代码
uv run uvicorn api.main:app --port 8080 --reload

此时访问:

复制代码
http://localhost:8080

即可使用。

MediaCrawler的案例应用

案例一:小红书关键词搜索采集

MediaCrawler README 直接给出了小红书关键词搜索场景。完成登录和配置后,通过:

复制代码
uv run main.py --platform xhs --lt qrcode --type search

从配置文件读取关键词并搜索相关帖子,同时根据评论功能配置决定是否获取评论。项目功能表明确显示,小红书支持关键词搜索、指定帖子 ID、二级评论、指定创作者主页、登录态缓存、IP 代理池和评论词云等能力。

案例二:指定小红书帖子 ID 采集详情

当目标不是关键词搜索,而是已经拥有指定帖子 ID 时,可以使用:

复制代码
uv run main.py --platform xhs --lt qrcode --type detail

项目说明该命令从配置文件中读取指定帖子 ID 列表,并获取指定帖子的信息以及评论信息。该模式与关键词搜索模式形成对应,可用于围绕明确目标对象执行详情采集。

案例三:跨平台执行同类采集任务

项目架构文档给出了 7 个平台及其主要功能:小红书支持笔记搜索、详情、创作者;抖音支持视频搜索、详情、创作者;快手支持视频搜索、详情、创作者;B 站支持视频搜索、详情、UP 主;微博支持微博搜索、详情、博主;百度贴吧支持帖子搜索、详情;知乎支持问答搜索、详情、答主。

因此,可以按照统一的命令入口,通过不同的 --platform 参数选择对应平台。例如项目 README 展示的小红书为:

复制代码
uv run main.py --platform xhs --lt qrcode --type search

而具体平台支持的运行参数可以使用:

复制代码
uv run main.py --help

进行查看。

案例四:SQLite 本地存储采集结果

项目文档将 SQLite 列为轻量级数据库存储方式,并推荐个人用户使用。通过下面的命令可以在采集过程中直接选择 SQLite:

复制代码
uv run main.py --platform xhs --lt qrcode --type search --save_data_option sqlite

项目的数据存储体系同时支持 CSV、JSON、JSONL、Excel、SQLite 和 MySQL,因此同一个采集流程可以根据 save_data_option 选择不同的数据保存方式。

案例五:Excel 格式导出分析

配置:

复制代码
SAVE_DATA_OPTION = "excel"

之后执行:

复制代码
uv run main.py --platform xhs --lt qrcode --type search

或者直接:

复制代码
uv run main.py --platform bili --lt qrcode --type search --save_data_option excel

项目 Excel 导出指南同时给出了小红书、抖音和 B 站三个示例,并说明结果保存在 data/{platform}/ 目录中。

案例六:使用 WebUI 完成可视化采集

启动后端:

复制代码
uv run uvicorn api.main:app --port 8080 --reload

再启动前端:

复制代码
cd webui
npm install
npm run dev

访问:

复制代码
http://localhost:5173/

进入 WebUI 后,可以可视化配置平台、登录方式和爬取类型,实时查看爬虫运行状态及日志,同时进行数据预览和导出。

需要注意的是,项目仓库明确声明该项目内容仅供学习和研究,禁止用于商业用途、非法用途以及对其他平台进行大规模爬虫或侵犯他人合法权益的行为。

相关推荐
深蓝电商API12 小时前
Hook Canvas 获取浏览器指纹
爬虫·hook canvas
深蓝电商API14 小时前
Hook Crypto API 获取加密参数
爬虫·hook crypto api
瓦学妹2 天前
Wikimon Scraper:用 Python 构建数据爬虫
开发语言·爬虫·python
小白学大数据2 天前
长周期爬虫的数据一致性:断点续爬 + 事务回滚保障采集质量
开发语言·爬虫·测试工具
跨境旺仔小拳头2 天前
Wikimon Scraper:用 Python 构建数据爬虫
数据库·爬虫·python
鬼手点金2 天前
Scrapy 网络爬虫框架
爬虫·python·scrapy·ajax·html·json·requsts
正在走向自律2 天前
WorkBuddy AI工具使用介绍完全指南
人工智能·爬虫·ai编程·workbuddy·ai的力量
雨晨源码(同名B站)2 天前
基于Python的网易云音乐评论数据情感化分析系统 音乐爬虫信息可视化 |SnowNLP评论情感分析
开发语言·hadoop·爬虫·python·信息可视化·毕业设计
鬼手点金3 天前
Scrapy + Playwright 完整示例(JS 动态渲染网页)
开发语言·javascript·爬虫·python·scrapy·html·json