如何使用bash提取图像URL



我想使用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" "$@"' _

最新更新