使用 wget 下载图像文件夹
Posted
技术标签:
【中文标题】使用 wget 下载图像文件夹【英文标题】:Image folder download using wget 【发布时间】:2011-03-09 01:30:32 【问题描述】:我需要在我的脚本中写一行来从像 abc.com/Image/images/ 这样的 url 下载一个目录(大约有 10 张图片),在脚本中尝试如下 wget 命令:
wget -e robots=off -r -l1 --no-parent -A.gif http://abc.com/Image/images/ 或 wget -A "*.gif" http://abc.com/Image/images/
但它给出的错误是:
HTTP 请求已发送,等待响应... 403 Forbidden 11:25:12 错误 403:禁止。 删除 abc.com/Images/images/index.html 因为它应该被拒绝。 取消链接:没有这样的文件或目录
我已经在使用 wget 命令从同一个 URL 下载一个文件,它工作正常,但在目录的情况下它会失败。
谁能在这方面快速帮助我?
【问题讨论】:
【参考方案1】:如果您知道名称(您必须知道,如果远程目录不是“打开”并且内容无法列出),请考虑将它们放入文件并使用 for
或 while
(在 bash或powershell或你拥有的)或类似的;如果名称遵循“模式”,请考虑改用curl
,使用它您可以执行以下操作
curl http://asdf.com/what/ever/image/img[00-99].gif -o img#1.gif
下载名称为 img00.gif、img01.gif 等的图像。
【讨论】:
【参考方案2】:这是不可能的。
wget
无法知道远程服务器上存在哪些文件。
相反,如果服务器启用了目录浏览,或者图像链接到某个地方,您可以抓取其他页面。
【讨论】:
【参考方案3】:我想你不能列出网络服务器上的目录。 wget 正在从其 Web 列表中获取有关您要下载的目录内容的信息。如果不允许这样做(403:禁止),则 wget 无法下载文件。当然,我可能错了
【讨论】:
但如果我将 url 中的图像名称指定为 :abc.com/Image/images/abc.gif 那么我可以下载这些图像,对于文件夹中的其他图像也是如此。但是当试图获取整个文件夹时,它会出错。 确实如此。您会看到,当您将直接 URL 作为参数提供时,wget 将拥有下载该文件所需的所有信息。但是目录名称不会提供有关其内容的信息。因此,当您传递 wget 目录名称时,它会请求该目录(就像它是一个文件一样)。当从网络服务器请求目录时,如果 index.html(或其他索引文件)不存在,网络服务器会尝试提供该目录的列表。由于此网络服务器不允许这样做,因此 wget 无法获得列表,也不知道要下载什么。以上是关于使用 wget 下载图像文件夹的主要内容,如果未能解决你的问题,请参考以下文章