CURL 下载目录

CURL 下载目录

我正在尝试使用 CURL 下载完整的网站目录。以下命令不起作用:

curl -LO http://example.com/

它返回一个错误:curl: Remote file name has no length!

但是当我这样做时:curl -LO http://example.com/someFile.type它起作用了。知道如何下载指定目录中的所有文件吗?谢谢。

答案1

对我来说总是有效的,不包括父级并且递归仅获取所需的目录。

 wget --no-parent -r http://WEBSITE.com/DIRECTORY

答案2

HTTP 实际上没有目录的概念。除了前三个斜杠 ( http://example.com/) 之外,其他斜杠没有任何特殊含义,除非..在相对 URL 中。因此,除非服务器遵循特定格式,否则无法“下载指定目录中的所有文件”。

如果您想下载整个网站,最好的办法是递归遍历主页中的所有链接。Curl 无法做到这一点,但 wget 可以。如果网站不是太动态,这种方法会奏效(特别是,wget 不会看到由 Javascript 代码构建的链接)。从 开始wget -r http://example.com/,然后在 wget 手册中的“递归检索选项”和“递归接受/拒绝选项”下查找更多相关选项(递归深度、排除列表等)。

如果网站试图阻止自动下载,您可能需要更改用户代理字符串(-U Mozilla)并忽略robots.txt(创建一个空文件example.com/robots.txt并使用该-nc选项,以便 wget 不会尝试从服务器下载它)。

答案3

在这种情况下,curl这不是最好的工具。你可以使用wget参数-r,如下所示:

wget -r http://example.com/ 

这是最基本的形式,并且您也可以使用其他参数。有关更多信息,请参阅manpage( man wget)。

答案4

当您从目录列表下载时,向 wget 添加一个名为“reject”的参数。

wget --no-parent -r --reject "index.html*" "http://url"

相关内容