我正在尝试从包含类似于以下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
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'在当前目录。