wget,curl - 下载的页面内容将 + 符号编码为“+”

wget,curl - downloaded page content encodes + sign as "+"

如标​​题所说。 例如做

wget "https://www.veracrypt.fr/en/Downloads.html" --local-encoding=utf-8 --remote-encoding=utf-8 -O - | less

请注意,页面中的 <a href> 元素包含 &#43;download,而不是预期的 +download。将编码的 url 送入 wget(或 curl)再次导致下载失败。

如何解决这个问题?需要明确的是,目的是 wget/curl 页面内容,grep 从中下载 link,然后 wget link 指向的资产。

这就是代码中的字面意思

<a href="https://launchpad.net/veracrypt/trunk/1.24-update6/&#43;download/VeraCrypt%20Setup%201.24-Update6.exe">

所以 wget 只是给你它得到的东西。请记住,在元素属性中,您可以使用 HTML entity escaping 转义字符。这是有效的 HTML,兼容的浏览器会在使用前正确解码。

您可以对任何 HTML 实体解码器执行相同的操作。除非您的抓取工具可以为您解码,否则您首先必须自己解码。