papaxia-chinese
SKILL.md
MediaCrawler Skill - 社交媒体内容抓取工具
支持平台
| 平台 | 代号 |
|---|---|
| 小红书 | xhs |
| 抖音 | dy |
| 快手 | ks |
| B 站 | bili |
| 微博 | wb |
| 知乎 | zhihu |
三种爬取模式
- search - 根据关键词搜索内容
- detail - 获取指定 ID 的内容详情
- creator - 获取创作者主页的所有内容
环境准备
首次使用时需安装依赖:
# 安装 uv(macOS/Linux)
curl -LsSf https://astral.sh/uv/install.sh | sh
# 安装 Node.js(抖音、知乎需要,版本 >= 16)
# https://nodejs.org/en/download/
# 进入项目目录安装 Python 依赖
cd MediaCrawler-main
uv sync
# 安装浏览器驱动
uv run playwright install
使用方法
命令格式
cd MediaCrawler-main
uv run main.py --platform <平台> --lt qrcode --type <模式> [其他参数]
登录方式(--lt):qrcode(扫码)、phone(手机号)、cookie
搜索模式(search)
# 基本搜索(多个关键词用逗号分隔)
uv run main.py --platform xhs --lt qrcode --type search --keywords "Python教程,AI工具"
# 常用可选参数
--get_comment true # 开启评论爬取
--save_data_option sqlite # 使用 SQLite 存储(支持自动去重)
详情模式(detail)
# 指定内容 ID 爬取(多个 ID 用逗号分隔)
uv run main.py --platform xhs --lt qrcode --type detail --specified_id "id1,id2"
各平台 ID 格式说明:
- 小红书:笔记 ID(URL 中
/explore/后的字符串) - 抖音:视频 ID(19 位数字,如
7301234567890123456) - B 站:BV 号(如
BV1xx411c7mD) - 快手:photo_id
- 微博:微博 ID
- 知乎:回答 ID 或文章 ID
创作者模式(creator)
uv run main.py --platform xhs --lt qrcode --type creator --creator_id "创作者ID"
各平台创作者 ID 获取方式:
- 小红书:用户主页 URL 中的 ID
- 抖音:
MS4wLjABAAAA开头的字符串 - B 站:UP 主的数字 UID(如
12345678) - 快手:用户主页 URL 中的 ID
- 微博:用户主页 URL
weibo.com/u/后的数字(如雷军为1749127163) - 知乎:用户主页 URL 中的 ID
完整参数说明
| 参数 | 说明 | 默认值 |
|---|---|---|
--platform |
平台代号 | 必填 |
--lt |
登录方式:qrcode / phone / cookie |
必填 |
--type |
爬取模式:search / detail / creator |
必填 |
--keywords |
搜索关键词,逗号分隔(search 模式) | - |
--specified_id |
内容 ID 列表,逗号分隔(detail 模式) | - |
--creator_id |
创作者 ID 列表,逗号分隔(creator 模式) | - |
--get_comment |
是否爬取一级评论 | true |
--get_sub_comment |
是否爬取二级评论 | false |
--max_comments_count_singlenotes |
单内容最大评论数 | 10 |
--save_data_option |
存储方式:jsonl / csv / excel / sqlite / db |
jsonl |
--max_concurrency_num |
并发数(建议不超过 5) | 1 |
--headless |
是否无头模式 | false |
数据存储位置
MediaCrawler-main/data/{platform}/
├── jsonl/
│ ├── search_contents_YYYY-MM-DD_HHmmss.jsonl # 内容数据(每次任务独立文件)
│ └── search_comments_YYYY-MM-DD_HHmmss.jsonl # 评论数据(每次任务独立文件)
技能执行流程
当用户请求抓取社交媒体内容时,按以下步骤操作:
-
确认需求:确定平台、爬取模式、关键词或目标 ID
-
检查环境:确认已安装依赖,工作目录为
MediaCrawler-main -
执行爬虫:根据需求构造命令并运行,如果需要扫码登录,主动通知用户扫码
-
生成报告:在
MediaCrawler-main目录下运行以下 Python 命令(result_formatter.py是库文件,不能直接执行,必须通过uv run python -c调用):# 工作目录必须是 MediaCrawler-main cd MediaCrawler-main # search 模式:传入平台和关键词列表(与爬取时的关键词保持一致) uv run python -c " import sys; sys.path.insert(0, '..') from scripts.result_formatter import ResultFormatter formatter = ResultFormatter() report_path = formatter.generate_report('zhihu', 'search', keywords=['宇宙奥德赛']) print('报告已生成:', report_path) " # creator / detail 模式:不传 keywords uv run python -c " import sys; sys.path.insert(0, '..') from scripts.result_formatter import ResultFormatter formatter = ResultFormatter() report_path = formatter.generate_report('xhs', 'creator') print('报告已生成:', report_path) "报告自动保存到
results/{platform}_{keywords}_报告.md。 -
展示结果:对报告进行总结,将总结内容插入报告开头,展示完整报告
常见问题
扫码登录失败
- 确保
--headless false,手动在浏览器中完成验证 - 确保用对应平台的 APP 扫码(小红书用小红书 APP,抖音用抖音 APP)
- 仍失败时改用 Cookie 登录:
Cookie 获取方法:浏览器登录平台 → F12 开发者工具 → 任意请求 → 复制请求头中的uv run main.py --platform xhs --lt cookie --cookies "你的Cookie值" --type search --keywords "关键词"Cookie值
每次都需要重新扫码
短期内多次使用同一平台通常无需重新登录(浏览器数据保存在 browser_data/ 目录)。Cookie 过期(7-30 天)后需重新登录。
数据去重
使用 SQLite 存储可自动去重:
uv run main.py --init_db sqlite # 首次初始化数据库
uv run main.py --platform xhs --lt qrcode --type search --keywords "关键词" --save_data_option sqlite
注意事项
- 仅用于学习和研究目的,不得用于商业用途
- 遵守目标平台的使用条款
- 合理控制爬取数量和并发数(
--max_concurrency_num建议不超过 5)