diff --git a/.planning/debug/zhihu-article-images-missing.md b/.planning/debug/zhihu-article-images-missing.md new file mode 100644 index 0000000..31b548b --- /dev/null +++ b/.planning/debug/zhihu-article-images-missing.md @@ -0,0 +1,68 @@ +--- +status: awaiting_human_verify +trigger: "知乎文章处理时图片链接丢失" +created: 2026-03-15T00:00:00Z +updated: 2026-03-15T00:03:00Z +--- + +## Current Focus + +hypothesis: ROOT CAUSE CONFIRMED - 知乎懒加载图片的 src 属性是 SVG 占位符,真实 URL 在 data-actualsrc 属性中 +test: 已验证 markdownify 只读取 src 属性,得到无效的 SVG 占位符 +expecting: 修改 markdown_converter.py 处理知乎懒加载图片 +next_action: 修复 markdown_converter.py,提取真实图片 URL + +## Resolution + +root_cause: 知乎使用图片懒加载机制,`` 标签的 `src` 属性包含 SVG 占位符(`data:image/svg+xml;...`),真实图片 URL 存储在 `data-actualsrc` 属性中。`markdownify` 库默认只读取 `src` 属性,导致转换后的 Markdown 包含无效的 SVG 占位符而不是真实图片链接。 +fix: 修改 `markdown_converter.py`,使用 BeautifulSoup 在转换前预处理 HTML,将 `data-actualsrc` 或 `data-original` 属性的值替换到 `src` 属性中 +verification: 单元测试全部通过(25/25),包括新的懒加载图片处理测试 +files_changed: [kb-zhihu-metadata/markdown_converter.py, tests/test_zhihu_metadata/test_markdown_converter.py] + +## Symptoms + +expected: 当分析知乎文章时,原文部分的图片链接应该保留在 markdown 中,用户可以在 markdown 中看到图片链接 +actual: 文字内容正确,图片无法看到,最后归档的分析内容中完全没有图片或者图片链接 +errors: 无显式错误,命令执行成功但图片丢失 +reproduction: 运行一键 CLI 命令处理知乎链接:https://www.zhihu.com/question/1936375725931361485/answer/2003232153480226496 +started: 第一次出现,可能是功能从未正确实现 + +## Eliminated + + + +## Evidence + +- timestamp: 2026-03-15T00:00:00Z + checked: markdown_converter.py 的图片转换 + found: markdownify 正确转换 `` 标签为 Markdown 格式 `![](url)` + implication: Markdown 转换器工作正常,问题不在转换层 + +- timestamp: 2026-03-15T00:00:00Z + checked: zhihu_extractor.py 的 _extract_answer_content 方法 + found: 使用 `.RichText` 选择器获取 HTML,然后调用 markdown_converter.convert() + implication: 提取逻辑看起来正确,需要验证选择器是否正确获取到包含图片的 HTML + +- timestamp: 2026-03-15T00:00:00Z + checked: zhihu_article_crawler.py(MediaCrawler 版本) + found: 第139行使用 `content_text` 字段,这是纯文本,不包含 HTML + implication: 这是另一个路径(MediaCrawler),但 kb_pipeline 使用的是 ZhihuPlaywrightExtractor + +- timestamp: 2026-03-15T00:01:00Z + checked: 知乎懒加载图片机制 + found: 知乎图片的 src 属性是 SVG 占位符(data:image/svg+xml;...),真实 URL 在 data-actualsrc 或 data-original 属性中 + implication: markdownify 只读取 src 属性,得到无效占位符而非真实图片链接 + +- timestamp: 2026-03-15T00:01:00Z + checked: 模拟知乎懒加载 HTML 转换测试 + found: 确认转换结果包含 `data:image/svg+xml` 占位符而不是真实图片 URL + implication: ROOT CAUSE CONFIRMED - 需要预处理 HTML 提取真实图片 URL + +## Resolution (问题2: 原文丢失) + +root_cause: 知乎回答 (answer) 和专栏 (zhuanlan) 的原文没有被追加到分析报告中。代码只在 `content_type == "article"` 时设置和追加原文,但知乎回答的类型是 `"answer"` +fix: + - `deep_analyzer.py:184` - 扩展条件为 `content_type in ("article", "answer", "zhuanlan")` + - `analyze.py:244` - 扩展条件为 `content_type in ("article", "answer", "zhuanlan")` +verification: 待用户测试 +files_changed: [kb-deep-analyzer/deep_analyzer.py, kb_pipeline/processors/analyze.py] diff --git a/kb-zhihu-metadata/__init__.py b/kb-zhihu-metadata/__init__.py new file mode 100644 index 0000000..e69de29