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就不会试图从服务器下载)。
你可能会在这里找到一个网站开膛手的用途,这将下载所有的东西,并修改内容/内部链接供本地使用。一个好的可以在这里找到。 http://www.httrack.com