wget -m
不久前,我下载了一个带有 的页面。内部链接转换不正确,因此只要 URL 包含?
(GET 参数),链接就会断开。如果我将?
URL 中的 更改为%3F
,链接就会正常工作。但是,我显然无法更改页面中的所有问号,因为其中一些是外部 URL、javascript 或页面其他部分的一部分。
我可以使用哪种工具来修复这些断开的链接?
该页面不再存在,所以我无法重新下载它(使用不同的 wget 选项)
答案1
?
您可以尝试用特定的上下文替换全部,例如
sed 's/?\([a-z][A-Z]\)/%3F\1/g' a.html > b.html
这将处理a.html
(保持不变)并b.html
使用修改后的 HTML 文本创建/覆盖。
该sed
表达式将找到?
后跟字母 ( [a-z][A-Z]
),捕获该字母 ( \(
.. \)
),并将其替换为%3F
和捕获的字母 ( \1
)。
根据您的 HTML 文件,您可能需要优化上下文才能获得有效的结果。
答案2
您可以将 --no-cobbler 选项与 -k 一起使用。
-nc
将确保文件不会被再次下载。
-k
如果文件存在于服务器上,将转换链接。
wget -rk -nc https://example.com