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

3.7 KiB
Raw Blame History

status, trigger, created, updated
status trigger created updated
awaiting_human_verify 知乎文章处理时图片链接丢失 2026-03-15T00:00:00Z 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

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]