使用wget下载图像文件夹

5
我需要在我的脚本中写一行代码,从像abc.com/Image/images/这样的url下载一个包含大约10张图片的目录。在脚本中尝试使用以下wget命令:
wget -e robots=off -r -l1 --no-parent -A.gif http://abc.com/Image/images/ OR wget -A "*.gif" http://abc.com/Image/images/ 但是它出现了以下错误:
HTTP request sent, awaiting response... 403 Forbidden 11:25:12 ERROR 403: Forbidden. Removing abc.com/Images/images/index.html since it should be rejected. unlink: No such file or directory
我已经在同一URL上使用wget命令下载一个文件,并且它可以正常工作,但是在目录的情况下它失败了。
有人能够快速帮助我吗?
3个回答

4

如果您知道名称(如果远程目录不是“open”且内容无法列出,则必须知道名称),考虑将它们放入文件中,并使用forwhile(在bash或powershell或您所拥有的任何东西中)或类似工具;如果名称遵循“模式”,则考虑改用curl,使用它可以执行以下操作:

curl http://asdf.com/what/ever/image/img[00-99].gif -o img#1.gif

下载以img00.gif、img01.gif等命名的图像。


1

我猜你不能在Web服务器上列出目录。wget正在从其Web列表中获取有关要下载的目录内容的信息。如果不允许这样做(403:禁止),则wget无法下载文件。当然,我可能是错的。


但是,如果我在URL中指定图像名称为:http://abc.com/Image/images/abc.gif,那么我就能够下载这些图像,对于文件夹中的其他图像也是如此。 但是当尝试获取整个文件夹时,它会出现错误。 - ha22109
1
确实。你看,当你将直接URL作为参数传递时,wget拥有下载该文件所需的所有信息。但是目录名称不提供其内容信息。因此,当您传递目录名称给wget时,它会请求该目录(就像请求文件一样)。当从Web服务器请求目录时,如果不存在index.html(或其他索引文件),Web服务器会尝试提供该目录的列表。由于在此Web服务器上不允许此操作,因此wget无法获取列表并且不知道要下载什么。 - Shade

0

这是不可能的。

wget 无法知道远程服务器上存在哪些文件。

如果服务器启用了目录浏览,或者图片在其他地方链接,您可以爬取其他页面。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接