MediaCrawler 是一个用于采集自媒体平台公开数据的 Python 工具,目前支持小红书、抖音、快手、B站、微博、贴吧和知乎七个平台,可以按关键词搜索帖子,也可以根据指定帖子 ID 抓取详情和评论,部分平台还支持二级评论、创作者主页爬取、登录态缓存、IP 代理池和评论词云图生成。
它的核心思路是使用 Playwright 浏览器自动化框架,通过保存登录态的方式获取签名参数,从而绕过复杂的 JS 逆向分析,大幅降低了爬虫编写门槛。项目默认采用 CDP 模式连接本地 Chrome 浏览器,可以复用浏览器已有的登录状态,降低风控识别风险。
快速开始
项目推荐使用 uv 管理 Python 依赖,同时需要 Node.js 环境(版本 >= 16)。
# 进入项目目录
cd MediaCrawler
# 使用 uv sync 命令来保证 python 版本和相关依赖包的一致性
uv sync
如果需要使用标准 Playwright 模式(而非默认 CDP 模式),需要安装浏览器驱动:
uv run playwright install
默认 CDP 模式需要安装最新版 Chrome(>= 144),并在地址栏打开 chrome://inspect/#remote-debugging,勾选 Allow remote debugging for this browser instance,看到 Server running at: 127.0.0.1:9222 即表示就绪。运行爬虫后 Chrome 会弹出确认对话框,点击“接受”即可。如果不想用 CDP 模式,可以在 config/base_config.py 中设置 ENABLE_CDP_MODE = False 切换。
运行爬虫的命令也很简单,以小红书为例:
# 从配置文件中读取关键词搜索相关的帖子并爬取帖子信息与评论
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
所有平台、登录方式和爬取类型等参数都可以在 config/base_config.py 中配置,文件内写有中文注释。
项目也提供了 WebUI 可视化操作界面,可以通过浏览器配置爬虫参数、查看运行状态和导出数据。开发调试时需要分别启动 API 服务和前端:
# 终端 1:启动 API 服务器(默认端口 8080)
uv run uvicorn api.main:app --port 8080 --reload
# 终端 2:启动前端开发服务器
cd webui
npm install
npm run dev
访问 http://localhost:5173/ 即可使用。如需生产部署,可先构建前端资源,再只启动 API 服务器,然后访问 http://localhost:8080。
数据保存
爬取结果支持多种存储方式,包括 CSV、JSON、JSONL、Excel、SQLite 和 MySQL,具体配置方法可参考项目文档。
注意事项
项目仅用于学习和研究,严禁用于商业用途或非法爬取行为。由于平台页面的动态变化,使用过程中可能需要关注项目的更新或根据实际情况调整配置。