5.9 KiB
知乎 DrissionPage 提取器 - 实施计划
目标: 用 DrissionPage 完全替换 Playwright,实现稳定可靠的知乎内容提取
方案: 使用 DrissionPage + Cookie 文件方案(从其他机器导出的 JSON 格式 Cookie)
预计总耗时: 45 分钟
Checkpoint 1: 安装 DrissionPage 和更新依赖
-
Task 1.1: 安装 DrissionPage 库 (~2 min)
- Action: 在虚拟环境中安装
DrissionPage - Verify:
import DrissionPage无报错
- Action: 在虚拟环境中安装
-
Task 1.2: 更新 requirements.txt (~1 min)
- Action: 添加
DrissionPage>=4.0.0到 requirements.txt - Verify: 文件中包含 DrissionPage 依赖
- Action: 添加
-
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: 文件创建成功,类能正常实例化
- Action: 创建
-
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 相关导入
- Action: 移除
Checkpoint 4: 更新配置文件
-
Task 4.1: 更新 config.yaml 添加 DrissionPage 配置 (~3 min)
- Action: 在
config.yaml中添加 zhihu.drissionpage 配置节 - Verify: 配置文件中包含 DrissionPage 相关配置项
- Action: 在
-
Task 4.2: 更新 Config 类支持新配置 (~3 min)
- Action: 在
src/config.py中添加 DrissionPage 配置的属性访问方法 - Verify: Config 类能正确读取 DrissionPage 配置
- Action: 在
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 格式(浏览器导出):
[
{
"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
}
]
配置方式:
zhihu:
enabled: true
use_drissionpage: true
cookie_file: ~/.obsidian-kb/zhihu_cookies.json # Cookie 文件路径
cookie_str: "" # 可选:直接在配置中填入
timeout: 30
headless: true
注意事项
-
Cookie 获取方式:
- 在有浏览器的机器上登录知乎
- 打开开发者工具 (F12)
- 进入 Application → Cookies → https://www.zhihu.com
- 导出所有 Cookie 为 JSON 文件
- 上传到服务器指定路径
-
Cookie 有效期:
- 知乎 Cookie 通常有效期为几天到几周
- 过期后需要重新导出 Cookie 文件
-
无头模式:
- 服务器环境无桌面,必须使用 headless 模式
- DrissionPage 默认支持 headless 模式
计划创建时间: 2026-02-08 05:45 下一步: 选择执行方式(单代理或多代理并行)