wget——page- required不下载data-srcset中的所有图像



我正在尝试从包含类似于以下html的页面中抓取图像:

<img class="lazyload u-object-fit"
data-srcset="/content/images/size/w400/img.jpeg 400w,
/content/images/size/w750/img.jpeg 750w,
/content/images/size/w960/img.jpeg 960w," data-sizes="auto"
src="/content/images/size/w750/img.jpeg"
srcset="data:image/gif;base64,R0lGODlhAQABAAAEALAAAAAABAARAAAICTBEAOw=="
>

我正在使用命令wget --page-requisites mydomain.com.
它成功下载了/content/images/size/w750/img.jpeg,但没有下载data-srcset中的其他两个映像。我如何使用wget下载所有的图像?

xidel -e 'tokenize(//img/@data-srcset, "s+S+,") ! tokenize(.)' -s file.html |
xargs -I{} echo wget https://domain.tld{}

输出如果输出看起来足够好,则删除echo命令:

wget https://domain.tld/content/images/size/w400/img.jpeg
wget https://domain.tld/content/images/size/w750/img.jpeg
wget https://domain.tld/content/images/size/w960/img.jpeg

要获得这些图像,您需要实际解析该网站。这可以通过html解析器xidel:

来完成
$ xidel -s "<url>" -e 'tokenize(//img/@data-srcset,"s+S+,n?")[.]'
/content/images/size/w400/img.jpeg
/content/images/size/w750/img.jpeg
/content/images/size/w960/img.jpeg

现在只需"follow"(与-f/--follow)这些url来获取这些图像的内容。
通常--download .就足够了,但由于所有3个图像都命名为'img.jpeg',您必须将它们重命名为:

$ xidel -s "<url>" 
-f 'tokenize(//img/@data-srcset,"s+S+,n?")[.]' 
--download '{extract($url,"wd+")}.jpeg'

这应该下载'w400.jpeg''w750.jpeg''w960.jpeg'在当前目录。

最新更新