我想使用bash命令从页面的html代码中提取图像URL,然后从该页面下载所有图像。我不确定这是否可能,因为有时它们存储在我无法访问的文件夹中。但是有可能从源代码下载它们吗?
到目前为止,我已经写了这篇文章:
wget -O plik.txt $1
grep *.jpg plik.txt > wget
grep *.png plik.txt > wget
grep *.gif plik.txt > wget
rm plik.txt```
在非交互式模式下使用lynx(一种文本web浏览器(和GNUxargs
:
#!/bin/bash
lynx -dump -listonly -image_links -nonumbers "$1" |
grep -Ei '.(jpg|png|gif)$' |
tr 'n' ' 00' |
xargs -0 -- wget --no-verbose --
这将立即开始下载
$1
中给出的网页URL中的匹配图像URL。它将包括页面中的图像和链接的图像。删除
-image_links
将跳过页面上的图像。您可以按照我为
.jpg
、.png
和.gif
提供的模式添加/删除任何要下载的扩展。(grep -i
不区分大小写(。使用空分隔符(通过
tr
(的原因是使用xargs -0
,这将避免包含单引号/撇号('
(的URL出现问题。wget的
--no-verbose
标志只是简化了日志输出。我发现如果下载一个大的文件列表,阅读起来会更容易。注意,常规GNU wget将通过附加一个数字(
foo.jpg.1
等(来处理任何重复的文件名。然而,例如,如果存在文件名,busybox-wget就会退出,从而放弃进一步的下载。您也可以修改
xargs
,只打印要下载的文件列表,这样您就可以先查看它:xargs -0 -- sh -c 'printf "%sn" "$@"' _