knowhow.md
4.17 KB
Reddit Scraper 知识体系
版本: 1.0.0 来源: Hunter 调研数据结构化整理 用途: Reddit 内容抓取与短剧素材提取
1. Reddit 抓取技术方案对比
1.1 方案概览
| 方案 | 认证要求 | 速率限制 | 复杂度 | 适用场景 |
|---|---|---|---|---|
| RSS/JSON Feed | 无需 | 30 req/min/IP | 低 | 快速原型、小规模抓取 |
| PRAW (官方 API) | OAuth2 | 60 req/min | 中 | 生产环境、大规模抓取 |
| 网页爬取 | 无需 | 受限 | 高 | 绕过限制(不推荐) |
1.2 RSS/JSON Feed 方案
技术实现
GET https://www.reddit.com/r/{subreddit}/hot.json?limit=50&t=week
Headers: User-Agent: Mozilla/5.0 (compatible; DramaScraper/1.0)
字段映射 | Reddit 字段 | 内部字段 | 说明 | |-------------|----------|------| | data.title | title | 帖子标题 | | data.selftext | body | 正文内容 | | data.ups | upvotes | 点赞数 | | data.num_comments | comments | 评论数 | | data.upvote_ratio | upvote_ratio | 赞踩比 | | data.created_utc | created_at | 发布时间(Unix 时间戳)| | data.id | post_id | 唯一标识符 |
1.3 PRAW 官方 API 方案
端点列表 | 端点 | 用途 | 返回 | |------|------|------| | /r/{sub}/hot | 热门帖子 | 帖子列表 | | /r/{sub}/top | 置顶帖子 | 帖子列表 | | /comments/{id} | 帖子详情 | 帖子 + 评论树 |
2. 戏剧性内容识别方法论
2.1 目标 Subreddit 评估矩阵
| Subreddit | 内容类型 | 戏剧张力 | 适用短剧类型 |
|---|---|---|---|
| r/AmITheAsshole | 道德困境/人际冲突 | ★★★★★ | 伦理冲突剧、家庭矛盾剧 |
| r/relationship_advice | 情感纠纷/关系危机 | ★★★★☆ | 爱情短剧、婚姻危机剧 |
| r/funny | 搞笑/意外 | ★★★☆☆ | 喜剧、反转剧 |
2.2 戏剧性评分算法
dramatic_score = (
engagement_ratio × 0.25 +
content_length_score × 0.15 +
emotion_density × 0.30 +
conflict_keywords_match × 0.30
) × 10
2.3 冲突关键词库
家庭矛盾: 父母、婆婆、老公、离婚、吵架、偏心、遗产、family、parents、divorce 职场冲突: 老板、同事、裁员、加班、辞职、升职、boss、coworker、layoff 情感纠纷: 出轨、分手、暗恋、劈腿、小三、cheating、breakup、affair 道德困境: 自私、背叛、撒谎、欺骗、selfish、betrayal、lying
3. 短剧素材提取 SOP
3.1 提取维度框架
- setting: 场景设定(location, time, mood)
- characters: 人物关系(role, relation, trait)
- conflict: 冲突核心(type, trigger, escalation, climax)
- dialogue_highlights: 精彩对话(金句、交锋)
- turning_point: 转折点
- emotional_arc: 情感弧线
3.2 高质量内容筛选标准
硬指标
- 点赞数 > 2000(P0 Subreddit)
- 评论数 > 100
- 赞踩比 > 0.65
软指标
- 评论/点赞比 > 0.1(高争议性)
- 正文长度 500-3000 字
- 戏剧性评分 > 7.0
4. JSON 输出格式规范
{
"source": { "platform", "subreddit", "post_id", "url", "scraped_at" },
"engagement": { "upvotes", "comments", "upvote_ratio", "dramatic_score" },
"content": { "title", "body", "drama_tags", "conflict_type" },
"drama_elements": {
"setting": { "location", "time", "mood" },
"characters": [{ "role", "relation", "trait" }],
"conflict": { "type", "trigger", "escalation", "climax" },
"dialogue_highlights": [],
"turning_point": "",
"emotional_arc": ""
},
"script_potential": {
"hook_strength": 0-10,
"viral_elements": [],
"estimated_duration": "3-5 min",
"genre_fit": []
}
}
5. 常见陷阱和处理技巧
| 陷阱 | 现象 | 解决方案 |
|---|---|---|
| 429 Too Many Requests | 请求被拒绝 | 实施指数退避重试;降低频率至 20 req/min |
| 空内容 | 仅标题无正文 | 跳过或标记为 link_post |
| 低质量翻译 | 中英文混合识别错误 | 使用语言检测库,分别处理 |
| 标签误判 | 关键词命中但非实际主题 | 结合上下文语义判断 |
文档版本: 1.0.0 | 生成时间: 2026-03-25