如何使用 wget 从网站下载所有图像?

如何使用 wget 从网站下载所有图像?

我希望你能帮助我wget,我想从库存图片网站下载所有图片,https://pixabay.com/但是当我在终端输入代码时,什么都没有下载,没有jpg,没有zip

我用了这个代码:

wget -r -A jpg https://pixabay.com/

我有时会使用jpgzip取决于网站。我尝试过更多网站:

http://www.freepik.com/
http://www.freeimages.com/
http://all-free-download.com/

根本没有下载。

答案1

这是工作命令:

wget -U "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:49.0) Gecko/20100101 Firefox/49.0" -nd -r --level=1  -e robots=off -A jpg,jpeg -H http://pixabay.com/
  • -U "...":该网站返回 HTTP 错误 403(禁止),因为它仅允许给定列表的 User-Agent 访问其页面。您必须规定常用浏览器(firefox、chrome 等)的 User-Agent。我给您的是一个工作示例。
  • -nd(无目录) 来自 man:“递归检索时不要创建目录层次结构。”
  • -e robots=off:不遵循 robot.txt 排除
  • -H:启用跨主机检索文件(此处 pixabay.com 和 cdn.pixabay.com 被视为不同的主机)

如果有某种速率限制机制,请添加以下选项--wait 1

答案2

首先,他们似乎不希望你下载他们的照片。请在行动时考虑这一点。

从技术上讲,您可以使用自定义标签/属性下载图片。您可以检查下载 html 源代码的自定义属性。不幸的是,wget(目前)不支持任意自定义标签。基本上您有两个选择:

  1. 按照以下建议使用此功能扩展 wgethttps://unix.stackexchange.com/questions/258835/wget-follow-custom-url-attributes
  2. 下载源代码并编写您自己的后处理器。

在第二种情况下,您必须下载索引文件并提取图像 url-s。您需要记住他们不希望您使用 wget,因此他们禁止其用户代理字符串。您必须伪造一些东西,例如 mozilla。如果您使用的是 Linux,则类似以下内容会列出图片:

wget -O --user-agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:21.0) Gecko/20100101 Firefox/21.0"    "https://pixabay.com/en/photos/?q=cats&hp=&image_type=&cat=&min_width=&min_height=" | grep -o 'https://cdn.pixabay[^" ]*'

您只需将其输入回 wget 即可。

..... | xargs wget

编辑:@vera 的解决方案也很好,但是在图像搜索的情况下,它似乎会下载一小部分图片。[抱歉,没有足够的积分来评论:)]

相关内容