因此,当我尝试使用 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
(也请温柔,因为这是我在这里提出的第一个问题)
404 错误
解码失败链接的编码部分揭示了“路径”实际上是文档源中存在的变量名称(例如
%7B%7B%20data.avatar_url%20%7D%7D
变成{{ data.avatar_url }}
)。所以这可能是返回404
响应的原因,而不是编码。前导
https://www.inhaltsangabe.de/autoren/
可能(错误)应用,wget
因为每个变量都出现在<img>
标签src
属性中:前任。{{ data.images.thumbnail.url }}
前任。{{ data.avatar_url }}
缺少 JPEG
关于
brecht-276fafb8.jpeg
,虽然公认有点有根据的猜测,但似乎wget
是在处理文档源中的<img>
标签src
和srcset
属性,而不是任何data-src
或data-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"/>
这是有道理的,因为
src
和srcset
属性可能会影响文档的一般表示(即要显示的图像),而data-*
属性主要针对脚本等,并且它们本身没有任何表示价值。据我所知,至少在以前的版本中,自定义属性(例如
data-*
)通常不受wget
. 关于src
和scrset
,您可以src/html-url.c
在源代码中的要处理的属性列表中明确提到它们wget
)。不幸的是,我不知道解决这个问题的好方法。我的想法可能是使用BeautifulSoup之类的东西对给定的文档源进行一些手动后处理,以提取任何相关链接。但我不确定这是否可以被认为是“好”。