linux - 如何从图像宽度大于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}'`
解决方案
下面的脚本适用于特定网页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
替换命令。
推荐阅读
- python - 如何在并行映射中传递“常量”参数?
- amazon-web-services - Cognito 通过 AWS lambda 函数授权用户
- python - 计算 Jacobian x Jacobian.T 的有效方法
- shell - 如何将剪贴板内容从/粘贴到 IBM Cloud Shell?
- node.js - NestJs 和 Jest:等待请求抛出 404
- sql - SQL Lag 函数和 where 子句
- node.js - sequelize 获取引用表的列值
- jmeter - 在 ISO8583 的 JMeter 上使用 JPOS 运行多个线程时出错
- c - 查找哪个分隔符导致在 C 中 strtok() 处的索引值处拆分
- python - 将子字符串替换为
子串 在美丽汤