This repository has been archived on 2026-08-07. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
kb-skills/.planning/debug/zhihu-article-images-missing.md
T
2026-03-16 00:09:16 +08:00

69 lines
3.7 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.
---
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: 知乎使用图片懒加载机制,`<img>` 标签的 `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
<!-- APPEND only -->
## Evidence
- timestamp: 2026-03-15T00:00:00Z
checked: markdown_converter.py 的图片转换
found: markdownify 正确转换 `<img>` 标签为 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]