Answers:
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不会尝试从服务器下载它)。
-e robots=off
。另外,您可以通过拒绝来避免下载-R "robots.txt"
。
这是不可能的。Web服务器没有标准的,通常实现的方法来将目录的内容返回给您。如果配置为这样做,大多数服务器的确会生成目录的HTML索引,但是此输出不是标准的,也不以任何方式保证。您可以解析此HTML,但是请记住,格式将在服务器之间变化,并且不会始终启用。
wget
或curl
?
您可能会在这里找到网站开膛手的用途,这将下载所有内容并修改内容/内部链接以供本地使用。一个很好的可以在这里找到:http : //www.httrack.com