Blog Bug 002:文章页面点击图片展示报错
问题描述
在文章页中点击图片,想在新 Tab 中打开图片,结果打开失败。
新 tab 中给出的 URL https://maxieewong.com/File:Sma5_15.jpg.html 与实际不符。
分析
查看对应的捕获 HTML 2861.html,关于图片的描述如下:
<figure-inline typeof="mw:Image">
<a href="./File:Sma5_15.jpg.html">
<img data-file-height="1333" data-file-type="bitmap" data-file-width="2560" height="469" src="/img/Sma5_15.jpg" width="900">
</a>
</figure-inline>
原因是我只处理了 img 标签,没有处理外部的标签。
Bug1 生成器遗留问题
在 Bug 1 修复中,修复了抓取页面的 HTML,但是没有重新 output。
因此在单篇文章重新生成时,需要再 output 一下。修复。
解决方法
完善图片处理代码。
从 img 标签,向外找到 a 标签,修改其 href。
同时,也把 img 标签内的无用属性清理一下。修复。
Rust kuchiki 中如何获取父节点?
通过 ChatGPT 快速获取答案:
在 Rust 的 Kuchiki 库中,可以使用 parent_element
方法来获取某个节点的父节点。例如,假设你有一个名为 node
的节点,你可以这样获取它的父节点:
use kuchiki::NodeRef;
let parent = node.parent_element().unwrap();
注意,parent_element
方法返回一个 Option
类型的值,因为节点可能没有父节点。如果 node
有父节点,则返回 Some
值,否则返回 None
。因此,上面的代码使用了 unwrap
方法来忽略 None
值并返回父节点。
如果你想要在节点没有父节点时执行特定的操作,可以使用 if let
语句来检查返回值是否为 Some
。例如:
use kuchiki::NodeRef;
if let Some(parent) = node.parent_element() {
println!("The parent of node is {:?}", parent);
} else {
println!("Node does not have a parent");
}
总结
总体收获:
- 问题解决
- 单篇文章生成完善
- 学会 Rust kuchiki 中如何获取父节点?
- ChatGPT 对 Rust 语言也很擅长