基于 原版MediaCrawler 的增强版本,在保留原有强大爬虫功能的基础上,新增了飞书多维表格数据同步和自动化处理能力,打造一站式数据采集与分析平台。
- 🚀 飞书数据同步 - 一键将爬取数据同步到飞书多维表格
- 🤖 AI智能处理 - 自动数据清洗、质量评分、内容分类
- ⏰ 自动化调度 - 定时任务、文件监控、智能重试
- 📊 监控告警 - 实时状态监控、异常告警通知
- 🐳 容器化部署 - 一键部署、轻量级运行
| 平台 | 关键词搜索 | 指定帖子ID爬取 | 二级评论 | 指定创作者主页 | 登录态缓存 | IP代理池 | 生成评论词云图 |
|---|---|---|---|---|---|---|---|
| 小红书 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| 抖音 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| 快手 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| B 站 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| 微博 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| 贴吧 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| 功能模块 | 飞书同步 | WebUI控制台 | API服务 | 任务调度 | Pipeline引擎 | AI数据清洗 | 容器部署 |
|---|---|---|---|---|---|---|---|
| 当前版本 | ✅ | ✅ | ✅ | ✅ | ✅ | ⏳ | ⏳ |
| 说明 | 全链路同步 | Sprint 3 完成 | FastAPI | Cron+手动触发 | 5步骤模块化 | 开发中 | 开发中 |
✅ 已完成 | ⏳ 开发中 | 📋 已规划
# 克隆项目
git clone https://github.com/njueeRay/MediaCrawler.git
cd MediaCrawler
# 一键安装和配置
chmod +x setup.sh
./setup.sh# 爬取小红书数据
python main.py --platform xhs --type search --keywords "投资理财"
# 详细使用方法参考原版文档
cat README_original.md# 生产模式:先构建前端,再启动后端(推荐)
cd webui-src && npm install && npm run build && cd ..
uv run uvicorn api.main:app --host 0.0.0.0 --port 8080
# 浏览器访问:http://localhost:8080
# 开发模式:前后端分离启动(支持前端热重载)
# 终端1:uv run uvicorn api.main:app --host 0.0.0.0 --port 8080 --reload
# 终端2:cd webui-src && npm run dev
# 浏览器访问:http://localhost:3000详细联调步骤参阅 docs/guide/quickstart.md
# 同步单个 JSON/CSV 文件
uv run sync_to_feishu.py --file data/xhs/json/search_contents.json
# 批量同步整个目录
uv run sync_to_feishu.py --dir data/xhs/json/ --batch-size 50
# Pipeline 全链路(飞书拉取 → 爬虫 → 飞书推送)
# 通过 WebUI 控制台的「订阅任务」配置并触发# WebUI 控制台创建定时任务并管理调度
# 或通过 API 直接触发
curl -X POST http://localhost:8080/api/scheduler/tasks/{id}/triggerMediaCrawler/
├── 📂 爬虫核心
│ ├── main.py # 爬虫入口
│ ├── media_platform/ # 各平台实现(XHS/抖音/B站/微博等)
│ └── config/ # 爬虫配置
│
├── 🚀 飞书同步模块
│ ├── sync_to_feishu.py # 统一 CLI(同步/追加/JSON展开)
│ ├── feishu_sync/ # 核心库
│ │ ├── sync_manager.py # 建表/建字段/批量写入
│ │ ├── data_formatter.py # 数据格式化
│ │ ├── image_uploader.py # 图片/附件上传
│ │ ├── json_column_sync.py # JSON列展开同步
│ │ └── read_from_feishu.py # 飞书数据拉取
│ └── docs/feishu/ # 飞书相关文档
│
├── 🖥️ WebUI 控制台
│ ├── api/ # FastAPI 后端
│ │ ├── main.py # API 入口
│ │ ├── routers/ # 路由(爬虫/调度/订阅/配置)
│ │ ├── services/ # 业务逻辑(含 pipeline_steps.py)
│ │ └── webui/ # 前端静态文件
│ └── webui-src/ # Vue3 前端源码
│
├── ⏰ 任务调度
│ ├── auto_scheduler.py # 独立调度器
│ └── api/services/scheduler_service.py # WebUI 集成调度
│
└── 🗄️ 数据存储
├── database/ # ORM 模型(SQLite/MySQL)
├── store/ # 存储适配层(CSV/JSON/DB/Excel)
└── data/ # 爬取数据输出目录
- 无逆向工程 - 基于Playwright浏览器自动化,避免复杂的JS逆向
- 稳定可靠 - 经过生产环境验证,1794条评论+400条笔记成功同步
- 模块化设计 - 松耦合架构,易于扩展和维护
- 配置驱动 - 通过配置文件灵活控制行为
- 一站式解决方案 - 从数据采集到分析展示的完整闭环
- 智能化处理 - AI驱动的数据清洗和质量控制
- 企业级特性 - 监控、告警、备份、恢复等生产级功能
- 商业化就绪 - 支持SaaS模式和私有部署
# 1. 爬取竞品分析数据
python main.py --platform xhs --type search --keywords "竞品关键词"
# 2. AI清洗和质量评分
python auto_scheduler.py --mode once --task ai_clean
# 3. 同步到飞书进行分析
python feishu_sync_simple.py --dir data/xhs/json/ --batch-size 50# 1. 启动7x24小时自动化监控
./start_scheduler.sh
# 监控内容:
# - 每日2点自动爬取
# - 实时文件监控
# - AI智能处理
# - 自动同步飞书
# - 异常告警通知# .env 文件配置
FEISHU_APP_ID=your_app_id
FEISHU_APP_SECRET=your_app_secret
FEISHU_APP_TOKEN=your_app_token
# AI处理配置(可选)
OPENAI_API_KEY=your_openai_key
AI_MODEL=gpt-3.5-turbo
QUALITY_THRESHOLD=0.7# config/workflow.yaml
name: "daily_sync"
schedule: "0 2 * * *" # 每日2点执行
tasks:
- name: "crawl_data"
type: "crawler"
config: { keywords: ["投资", "创业"], limit: 1000 }
- name: "ai_clean"
type: "ai_processor"
depends_on: ["crawl_data"]
config: { quality_threshold: 0.7 }
- name: "sync_feishu"
type: "feishu_sync"
depends_on: ["ai_clean"]
config: { batch_size: 50 }- 飞书多维表格全链路数据同步
- WebUI 控制台(Vue3 + FastAPI,Sprint 1~3 验收通过)
- RESTful API 服务
- 任务调度系统(Cron + 手动触发)
- Pipeline 模块化引擎(5步骤:爬取 → 飞书拉取 → 飞书推送 → 数据处理)
- SQLite 中间层(feishu_record_snapshot)
- AI 数据清洗和质量评分
- 容器化部署方案
- 多租户 SaaS 模式
- 实时数据可视化看板
详细规划参见:Feishu Backlog
欢迎参与项目开发!请查看:
- Issues - 报告问题或提出建议
- Pull Requests - 提交代码贡献
- Discussions - 技术讨论和交流
重要提醒:请遵守相关法律法规
本项目仅供学习和研究使用,禁止用于商业用途。使用者应当遵守目标平台的robots.txt规则和服务条款,不得进行大规模爬取或其他可能对平台造成负担的行为。对于因使用本项目而引起的任何法律问题,项目维护者不承担任何责任。
详细声明请查看:完整免责声明
- 项目仓库: https://github.com/njueeRay/MediaCrawler
- 问题报告: GitHub Issues
- 功能建议: GitHub Discussions
⭐ 如果这个项目对你有帮助,请给个Star支持一下!
Made with ❤️ by MediaCrawler Team