This repository has been archived on 2026-02-15. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
openclaw-skills/memory/plans/zhihu-drissionpage-implementation.md
T

188 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 知乎 DrissionPage 提取器 - 实施计划
**目标:** 用 DrissionPage 完全替换 Playwright,实现稳定可靠的知乎内容提取
**方案:** 使用 DrissionPage + Cookie 文件方案(从其他机器导出的 JSON 格式 Cookie)
**预计总耗时:** 45 分钟
---
## Checkpoint 1: 安装 DrissionPage 和更新依赖
- [ ] Task 1.1: 安装 DrissionPage 库 (~2 min)
- **Action:** 在虚拟环境中安装 `DrissionPage`
- **Verify:** `import DrissionPage` 无报错
- [ ] Task 1.2: 更新 requirements.txt (~1 min)
- **Action:** 添加 `DrissionPage>=4.0.0` 到 requirements.txt
- **Verify:** 文件中包含 DrissionPage 依赖
- [ ] Task 1.3: 验证 DrissionPage 基本功能 (~2 min)
- **Action:** 创建测试脚本验证 DrissionPage 能正常启动浏览器
- **Verify:** 测试脚本运行成功,能创建页面对象
---
## Checkpoint 2: 创建 DrissionPage 提取器
- [ ] Task 2.1: 创建 ZhihuDrissionExtractor 类框架 (~3 min)
- **Action:** 创建 `src/sources/zhihu_drission_extractor.py`,定义类结构和初始化方法
- **Verify:** 文件创建成功,类能正常实例化
- [ ] Task 2.2: 实现 Cookie 加载逻辑 (~5 min)
- **Action:** 实现三种 Cookie 加载方式(文件/环境变量/配置),优先级:配置 > 环境 > 文件
- **Verify:** 能正确读取 JSON 格式的 Cookie 文件并应用到浏览器
- [ ] Task 2.3: 实现浏览器管理器 (~4 min)
- **Action:** 实现浏览器启动、关闭、页面导航等基础操作
- **Verify:** 能成功启动浏览器并访问知乎首页
- [ ] Task 2.4: 实现回答内容提取 (~5 min)
- **Action:** 实现知乎回答页面的标题、作者、内容、时间、点赞数提取
- **Verify:** 能正确提取知乎回答的所有元数据
- [ ] Task 2.5: 实现文章内容提取 (~4 min)
- **Action:** 实现知乎文章页面的元数据提取
- **Verify:** 能正确提取知乎文章的所有元数据
- [ ] Task 2.6: 实现问题内容提取 (~3 min)
- **Action:** 实现知乎问题页面的元数据提取
- **Verify:** 能正确提取知乎问题的所有元数据
- [ ] Task 2.7: 实现 Markdown 转换集成 (~3 min)
- **Action:** 集成现有的 MarkdownConverter,将 HTML 转为 Markdown
- **Verify:** 输出的 Markdown 格式完整,保留代码块、表格等格式
---
## Checkpoint 3: 集成到 ZhihuSource
- [ ] Task 3.1: 修改 ZhihuSource.get_transcript() (~5 min)
- **Action:** 移除 Playwright 逻辑,改为调用 DrissionPage 提取器
- **Verify:** ZhihuSource 能正常调用 DrissionPage 提取器
- [ ] Task 3.2: 移除旧的 Playwright 依赖 (~2 min)
- **Action:** 移除 `zhihu.py` 中的 Playwright 导入和相关代码
- **Verify:** 代码中不再有 Playwright 相关导入
---
## Checkpoint 4: 更新配置文件
- [ ] Task 4.1: 更新 config.yaml 添加 DrissionPage 配置 (~3 min)
- **Action:** 在 `config.yaml` 中添加 zhihu.drissionpage 配置节
- **Verify:** 配置文件中包含 DrissionPage 相关配置项
- [ ] Task 4.2: 更新 Config 类支持新配置 (~3 min)
- **Action:** 在 `src/config.py` 中添加 DrissionPage 配置的属性访问方法
- **Verify:** Config 类能正确读取 DrissionPage 配置
---
## Checkpoint 5: 更新文档
- [ ] Task 5.1: 更新 SKILL.md 文档 (~4 min)
- **Action:** 添加 DrissionPage 方案说明、配置方法、使用示例
- **Verify:** 文档中清晰说明 DrissionPage 方案的使用方法
- [ ] Task 5.2: 更新 README.md 文档 (~3 min)
- **Action:** 更新知乎提取章节,说明 DrissionPage 方案的优势
- **Verify:** README 中正确反映当前实现方案
---
## Checkpoint 6: 测试和验证
- [ ] Task 6.1: 创建测试脚本 (~3 min)
- **Action:** 创建测试脚本,使用真实知乎链接测试提取功能
- **Verify:** 测试脚本能运行并输出结果
- [ ] Task 6.2: 验证 Cookie 加载 (~3 min)
- **Action:** 创建测试 Cookie 文件,验证能正确加载和应用
- **Verify:** Cookie 能正确加载并应用到浏览器
- [ ] Task 6.3: 验证三种内容类型提取 (~5 min)
- **Action:** 分别测试回答、文章、问题三种类型的提取
- **Verify:** 三种类型都能正确提取,输出格式正确
- [ ] Task 6.4: 验证错误处理 (~3 min)
- **Action:** 测试无效 URL、网络错误、Cookie 过期等场景
- **Verify:** 错误场景下能正确处理并返回有意义的错误信息
---
## Verification Criteria
- [ ] 所有 Checkpoint 任务完成
- [ ] DrissionPage 提取器能正常工作
- [ ] Cookie 加载功能正常
- [ ] 三种知乎内容类型都能正确提取
- [ ] 输出格式完整(Markdown)
- [ ] 错误处理完善
- [ ] 文档更新完整
- [ ] 测试通过
---
## Cookie 文件格式说明
**JSON 格式(浏览器导出):**
```json
[
{
"name": "z_c0",
"value": "xxx",
"domain": ".zhihu.com",
"path": "/",
"expiry": 1234567890,
"secure": true,
"httpOnly": false
},
{
"name": "d_c0",
"value": "yyy",
"domain": ".zhihu.com",
"path": "/",
"expiry": 1234567890,
"secure": true,
"httpOnly": false
}
]
```
**配置方式:**
```yaml
zhihu:
enabled: true
use_drissionpage: true
cookie_file: ~/.obsidian-kb/zhihu_cookies.json # Cookie 文件路径
cookie_str: "" # 可选:直接在配置中填入
timeout: 30
headless: true
```
---
## 注意事项
1. **Cookie 获取方式:**
- 在有浏览器的机器上登录知乎
- 打开开发者工具 (F12)
- 进入 Application → Cookies → https://www.zhihu.com
- 导出所有 Cookie 为 JSON 文件
- 上传到服务器指定路径
2. **Cookie 有效期:**
- 知乎 Cookie 通常有效期为几天到几周
- 过期后需要重新导出 Cookie 文件
3. **无头模式:**
- 服务器环境无桌面,必须使用 headless 模式
- DrissionPage 默认支持 headless 模式
---
**计划创建时间:** 2026-02-08 05:45
**下一步:** 选择执行方式(单代理或多代理并行)