首页 > 解决方案 > 如何从图像宽度大于602px的ubuntu网站下载所有图像?

问题描述

如何从图像宽度大于602px的ubuntu网站下载所有图像?我的意思是我不想下载缩略图或调整大小的图片只想下载图像的原始像素。

给我这个页面的示例代码“ https://hdqwalls.com/category/funny-wallpapers

例子:

小缩略图 [300x200 像素]: https ://images.hdqwalls.com/wallpapers/thumb/smile-cry-box-09.jpg

大缩略图 [602x339 像素]:https ://images.hdqwalls.com/wallpapers/bthumb/smile-cry-box-09.jpg

原图【全像素】:https ://images.hdqwalls.com/wallpapers/smile-cry-box-09.jpg

我知道一个代码,但我不确定。

wget -i `wget -qO- https://wall.alphacoders.com/by_sub_category.php?id=169002&name=Model+Wallpapers | sed -n '/<img/s/.*src="\([^"]*\)".*/\1/p' | awk '{gsub("thumb-350-", "");print}'`

标签: linuxubuntucommand-lineubuntu-18.04

解决方案


下面的脚本适用于特定网页https://hdqwalls.com/category/funny-wallpapers ,假设完整尺寸图像的 URL 可以从缩略图 URL 派生,如问题中的示例所示。

它不检查图像大小,而只是尝试下载所有构建的图像 URL,这些 URL 应该是与缩略图图像对应的全尺寸图像。
(如果不先下载文件,则无法检查图像大小。)

转义的换行符只是为了更好的可读性。

wget -O- https://hdqwalls.com/category/funny-wallpapers | \
  grep -o "<img src='https://images.hdqwalls.com/wallpapers/thumb/[^.]*.jpg'" | \
  sed -e "s/[^']*'//" -e "s/'.*//" -e "s#/thumb/#/#" | \
  wget -i-

简短说明:

  • 首先wget将页面的 HTML 代码发送到管道
  • grep从 HTML 代码中提取缩略图标签
  • sed从 HTML 标记中提取纯缩略图 URL 并删除子目录/thumb/以从缩略图 URL 中导出完整大小的图像 URL
  • 第二个wget下载作为标准输入接收的 URL

当然,还有其他方法可以达到相同的效果。

如果您想将该脚本用于其他网页,您可能需要根据需要调整grep模式和sed替换命令。


推荐阅读