我正在尝试使用 CURL 下载完整的网站目录。以下命令不起作用:
curl -LO http://example.com/
Run Code Online (Sandbox Code Playgroud)
它返回一个错误:curl: Remote file name has no length!。
但是当我这样做时:curl -LO http://example.com/someFile.type它起作用了。知道如何下载指定目录中的所有文件吗?谢谢。
小智 60
总是对我有用,不包括父级,递归只获取所需的目录。
wget --no-parent -r http://WEBSITE.com/DIRECTORY
Run Code Online (Sandbox Code Playgroud)
Gil*_*il' 34
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 不会尝试从服务器下载它)。
小智 22
在这种情况下,curl不是最好的工具。您可以wget与-r参数一起使用,如下所示:
wget -r http://example.com/
Run Code Online (Sandbox Code Playgroud)
这是最基本的形式,您也可以使用其他参数。有关详细信息,请参阅manpage( man wget)。
这是不可能的。Web 服务器没有标准的、通常实现的方式将目录的内容返回给您。大多数服务器确实会生成目录的 HTML 索引(如果配置为这样做),但此输出不是标准的,也不能以任何方式保证。您可以解析此 HTML,但请记住,格式会因服务器而异,并且不会始终启用。
| 归档时间: |
|
| 查看次数: |
240881 次 |
| 最近记录: |