# Phase 8: 内容爬取实现 - Context **Gathered:** 2026-03-17 **Status:** Ready for planning ## Phase Boundary 实现知乎问答、专栏/文章、评论的完整爬取功能,包含网络反爬措施。 此阶段不涉及 Pipeline 整合(Phase 9),只专注于爬虫核心功能。 ## Implementation Decisions ### 爬取方式选择 - **实现方式**: 使用 Playwright 拦截 API 请求 - **原理**: 浏览器访问页面时拦截其发出的 API 请求(如 /api/v4/answers/xxx),直接获取 JSON 响应 - **优势**: 复用浏览器 Cookie,自动处理 x-zse-96 签名,无需逆向 - **支持内容类型**: 问答 (answer)、专栏 (zhuanlan) - **不支持**: 知乎视频 — 推迟到后续版本 ### 评论爬取范围 - **爬取范围**: 只爬取热门评论 - **嵌套展开**: 不展开回复的回复,只爬第一层评论 - **可选开关**: 评论爬取是可选功能,通过参数控制是否启用 ### 代理配置方式 - **配置方式**: 通过环境变量配置(HTTP_PROXY/HTTPS_PROXY) - **配置文件**: 添加到 ~/.kb_env,与现有配置方式一致 - **使用策略**: 强制使用代理 — 不配置代理则拒绝爬取,防止 IP 被封 ### 反爬策略 - **请求频率**: 随机延迟,每个请求间隔 1-3 秒 - **重试策略**: 有限重试,失败后重试 3 次,间隔递增 - **错误处理**: 重试全部失败后抛出异常,由上层处理 ### Claude's Discretion - Playwright 拦截的具体实现方式(route/intercept) - 热门评论的具体数量限制 - 重试间隔的具体递增策略 - 错误提示信息的具体文案 ## Existing Code Insights ### Reusable Assets - `kb_workflow/auth/zhihu_login.py` — ZhihuLogin 类,Cookie 获取和验证逻辑 - `kb_workflow/metadata/zhihu_extractor.py` — PlaywrightBrowser 类,浏览器管理 - `kb_workflow/pipeline/config.py` — KBSettings 配置类,支持环境变量加载 - `kb_workflow/pipeline/platforms/zhihu.py` — ZhihuAdapter 接口定义 ### Established Patterns - 配置管理: pydantic-settings BaseSettings + 环境变量 - 浏览器管理: PlaywrightBrowser 封装,支持 Cookie 设置 - API 验证: /api/v4/me 接口验证 Cookie 有效性 - 错误处理: 自定义 AuthError 异常类 ### Integration Points - 复用 Phase 7 的 Cookie 管理逻辑 - 复用 PlaywrightBrowser 浏览器管理类 - 新建 ZhihuCrawler 类处理 API 拦截和内容提取 - 输出格式与现有 ZhihuAdapter 保持一致 ## Specific Ideas - API 拦截示例: `page.route("**/api/v4/**", handler)` 拦截所有 API 请求 - 热门评论 API: `/api/v4/comment_v5/{type}/{id}/comments?order=hot` - 代理环境变量: `HTTP_PROXY=http://127.0.0.1:7890` - 随机延迟实现: `time.sleep(random.uniform(1, 3))` ## Deferred Ideas None — discussion stayed within phase scope --- *Phase: 08-crawler* *Context gathered: 2026-03-17*