用途:通过 Reddit 公开 JSON 列表采集搜索结果与完整评论树,先保留未修改的源响应,再本地规范化为分析可用 JSONL,强调可审计性。适用 bggg VOC 系列的 Reddit 数据获取环节,落点为 config/reddit_queries.tsv 到 work/reddit/ 与 data/raw/。
主要能力:构建确定性的请求计划;在已登录或公开 Chrome 标签页中以同源 fetch 抓取每个计划 URL,并按 data.after 分页;按互动与主题相关性排序父贴,下载高价值父贴的完整评论树;将保存的搜索列表与嵌套评论树解析为 JSONL,输出查询数、父贴数、评论数、唯一行、跳过项与失败等摘要。
使用方式:从项目根目录执行命令。构建请求计划:python3 scripts/build_request_plan.py --queries config/reddit_queries.tsv --output work/reddit/request_plan.json;查询文件为制表符分隔的 query、lang、round 列(后两列可选)。采集时在 Chrome 打开 reddit.com,从该页发起同源 fetch,不读取或导出浏览器 cookie、本地存储、配置文件或凭据;每个未修改响应保存至 data/raw/source_json/ 并追加 manifest 行。规范化为:python3 scripts/normalize_reddit.py --manifest work/reddit/source_manifest.jsonl --output data/raw/reddit_EN_2026-07-25.jsonl --summary work/reddit/normalize_summary.json。评论树下载使用 /comments/{post_id}.json?limit=500&depth=10&sort=top&raw_json=1。
限制与规则:原始 JSON 不可改写,重试写入新文件;使用 Reddit fullname 作为 native_id,source_id 由 SHA-256 生成;保留精确 text_raw;跳过 [deleted]、[removed]、空正文、广告与推广内容并计数;搜索列表是发现样本而非全量普查,需记录排序、时间窗、查询、游标与采集时间;仅在 after 为 null、达到上限或重复游标保护触发时停止分页;遵守登录墙、速率限制与验证页面,记录失败且不得绕过认证;先按 native_id 去重,相似去重留到后续清洗阶段;统计流行度时按父贴封顶或加权并披露规则。若 Chrome 同源抓取不可用,可尝试带保守 user agent 的公开 JSON 请求,被阻断则交付请求计划与采集清单及确切失败,不替代完整评论。
资源:scripts/build_request_plan.py、scripts/normalize_reddit.py、references/chrome_same_origin.md、references/schema.md。价格、平台支持范围等资料暂未提供。