wget 无法下载网页中的某些图片

wget 无法下载网页中的某些图片

所以当我尝试下载此网页使用 wget,文本和样式效果很好,但缺少一些图像。经过进一步研究,文件下载失败,因为 wget 尝试从中检索它们的 URL 无效,如控制台输出所示:

URL transformed to HTTPS due to an HSTS policy
--2021-07-13 21:53:51--  https://www.inhaltsangabe.de/autoren/%7B%7B%20data.avatar_url%20%7D%7D
Reusing existing connection to [www.inhaltsangabe.de]:443.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://www.inhaltsangabe.de/autoren/%7B%7B%20data.avatar_url%20%7D%7D/ [following]
--2021-07-13 21:53:52--  https://www.inhaltsangabe.de/autoren/%7B%7B%20data.avatar_url%20%7D%7D/
Reusing existing connection to [www.inhaltsangabe.de]:443.
HTTP request sent, awaiting response... 404 Not Found
2021-07-13 21:53:53 ERROR 404: Not Found.

网站上的实际图像可以访问,其 URL 如下:

https://www.inhaltsangabe.de/wp-content/themes/yootheme/cache/brecht-276fafb8.jpeg

下载的文件中其他图像可以正常工作。这似乎与 URL 编码有关,但我不知道如何解决这个问题。

我的命令:

wget -p www.inhaltsangabe.de/autoren/brecht

(也请保持温柔,因为这是我在这里提出的第一个问题)

答案1

404 错误

这似乎与 url 编码[.] 有关。

解码失败链接的编码部分后发现,“路径”实际上是文档源中存在的变量名(因此例如%7B%7B%20data.avatar_url%20%7D%7D变为{{ data.avatar_url }})。因此,这可能是返回响应的原因404,而不是编码。

由于每个变量都出现在标签属性中,因此前导https://www.inhaltsangabe.de/autoren/可能被(错误)应用:wget<img>src

例如 {{ data.images.thumbnail.url }}

<# if ( data.images.thumbnail ) { #>
      <img class="suggestion-post-thumbnail" src="{{ data.images.thumbnail.url }}" alt="{{ data.post_title }}">
      <# } #>

例如 {{ data.avatar_url }}

<# if ( data.avatar_url ) { #>
    <img class="suggestion-user-thumbnail" src="{{ data.avatar_url }}" alt="{{ data.display_name }}">
    <# } #>

缺少 JPEG

下载的文件中的其他图像运行良好。

关于brecht-276fafb8.jpeg,虽然这确实是一个有根据的猜测,但似乎很可能正在wget处理文档源中的<img>标签src和属性,但不是任何或属性。例如:srcsetdata-srcdata-srcset

例如 brecht-276fafb8.jpeg -> data-src, data-srcset (失败!)

<img class="el-image uk-border-circle uk-box-shadow-small" alt="Bertolt Brecht" data-src="/wp-content/themes/yootheme/cache/brecht-276fafb8.jpeg" data-srcset="/wp-content/themes/yootheme/cache/brecht-276fafb8.jpeg 350w" data-sizes="(min-width: 350px) 350px" data-width="350" data-height="350" uk-img>

例如 bradbury.jpg ->src, srcset (成功!)

<img width="300" height="300" src="https://www.inhaltsangabe.de/dateien/bradbury-300x300.jpg" alt="Ray Bradbury" sizes="(min-width: 300px) 300px" srcset="https://www.inhaltsangabe.de/dateien/bradbury-300x300.jpg 300w, https://www.inhaltsangabe.de/dateien/bradbury-150x150.jpg 150w, https://www.inhaltsangabe.de/dateien/bradbury.jpg 400w"/>

这是有道理的,因为srcsrcset属性可能会影响文档的整体呈现(即要显示的图像),而data-*属性主要用于脚本等,并且本身不具有任何呈现价值。


据我所知,至少在以前的版本中,自定义属性(例如data-*)通常不受支持wget。关于src和,您可以在源代码中scrset要处理的属性列表中看到它们明确提及)。src/html-url.cwget


我不知道如何解决这个问题。

不幸的是,我不知道这个问题有什么好的解决方案。我的想法可能是对给定的文档源进行一些手动后处理,例如美丽的汤提取任何相关链接。但我不确定这是否可以被视为“好”。

相关内容