如何下载包含在线文件/文件夹列表中显示的所有文件和子目录的HTTP目录?

时间:2014-05-03 15:54:42

标签: html http get download wget

我有一个可以访问的在线HTTP目录。我试图通过wget下载所有子目录和文件。但问题是,当wget下载子目录时,它会下载index.html文件,其中包含该目录中的文件列表,而无需自行下载文件。

有没有办法下载没有深度限制的子目录和文件(好像我想下载的目录只是我要复制到计算机的文件夹)。

online HTTP directory

8 个答案:

答案 0 :(得分:261)

解决方案:

wget -r -np -nH --cut-dirs=3 -R index.html http://hostname/aaa/bbb/ccc/ddd/

说明:

  • 它将下载 ddd 目录中的所有文件和子文件夹
  • -r:递归地
  • -np:不要进入上层目录,例如 ccc / ...
  • -nH:不保存文件到主机名文件夹
  • --cut-dirs=3:但省略了将其保存到 ddd 前3个文件夹 aaa bbb ccc
  • -R index.html:不包括 index.html 文件

参考:http://bmwieczorek.wordpress.com/2008/10/01/wget-recursively-download-all-files-from-certain-directory-listed-by-apache/

答案 1 :(得分:38)

我能够使用to this post感谢VisualWGet让这个工作起来。它对我很有用。重要的部分似乎是检查-recursive标志(见图)。

还发现-no-parent标志很重要,否则会尝试下载所有内容。

enter image description here enter image description here

答案 2 :(得分:6)

wget -r -np -nH --cut-dirs=3 -R index.html http://hostname/aaa/bbb/ccc/ddd/

来自man wget

<强>“ - R” “ - 递归” 打开递归检索。有关详细信息,请参阅递归下载。默认最大深度为5。

<强>“ - NP” “--no-父” 在递归检索时,不要提升到父目录。这是一个有用的选项,因为它保证只下载某个层次结构下面的文件。有关详细信息,请参阅基于目录的限制。

<强>“ - nH的” “--no宿主目录” 禁用主机前缀目录的生成。默认情况下,使用'-r http://fly.srk.fer.hr/'调用Wget将创建以fly.srk.fer.hr/开头的目录结构。此选项禁用此类行为。

<强>“ - 切显示目录=数” 忽略数字目录组件。这对于对将保存递归检索的目录进行细粒度控制非常有用。

以“ftp://ftp.xemacs.org/pub/xemacs/”目录为例。如果使用'-r'检索它,它将在本地保存在ftp.xemacs.org/pub/xemacs/下。虽然'-nH'选项可以删除ftp.xemacs.org/部分,但仍然存在pub / xemacs。这就是'--cut-dirs'派上用场的地方;它使Wget没有“看到”数字远程目录组件。以下是'--cut-dirs'选项如何工作的几个例子。

没有选项 - &gt; ftp.xemacs.org/pub/xemacs/ -nH - &gt;酒吧/ xemacs的/ -nH --cut-dirs = 1 - &gt; xemacs的/ -nH --cut-dirs = 2 - &gt;

- cut-dirs = 1 - &gt; ftp.xemacs.org/xemacs/ ... 如果您只想删除目录结构,则此选项类似于'-nd'和'-P'的组合。但是,与'-nd'不同,' - cut-dirs'不会丢失子目录 - 例如,使用'-nH --cut-dirs = 1',beta /子目录将被放置到xemacs / beta,如人们会期待。

答案 3 :(得分:6)

您可以使用lftp,这是下载工具,如果您有较大的文件,可以在命令中添加--use-pget-n=10

lftp -c 'mirror --parallel=100 https://example.com/files/ ;exit'

答案 4 :(得分:2)

wget是一个宝贵的资源,也是我自己使用的东西。但是,有时地址中有wget标识为语法错误的字符。我确信有一个解决办法,但由于这个问题没有具体询问wget我认为我会为那些毫无疑问会偶然发现这个页面寻找快速修复而没有学习的人提供替代方案需要曲线。

有一些浏览器扩展可以做到这一点,但大多数需要安装下载管理器,这些管理器并不总是免费的,往往是一个眼睛,并使用大量的资源。这是一个没有这些缺点的人:

“下载大师”是Google Chrome的扩展程序,非常适合从目录下载。您可以选择过滤要下载的文件类型,也可以下载整个目录。

https://chrome.google.com/webstore/detail/download-master/dljdacfojgikogldjffnkdcielnklkce

有关最新功能列表和其他信息,请访问开发人员博客上的项目页面:

http://monadownloadmaster.blogspot.com/

答案 5 :(得分:2)

无需插件!

使用bookmarklet。在书签中拖动this link,然后编辑并粘贴此代码:

JSON

然后转到页面(从您要下载文件的位置),然后单击该书签。

答案 6 :(得分:1)

您可以使用this Firefox插件来下载HTTP目录中的所有文件。

https://addons.mozilla.org/en-US/firefox/addon/http-directory-downloader/

答案 7 :(得分:-1)

wget通常以这种方式工作,但是某些站点可能会出现问题,并且可能会创建太多不必要的html文件。为了简化此工作并防止不必要的文件创建,我共享了getwebfolder脚本,这是我为自己编写的第一个linux脚本。该脚本下载作为参数输入的Web文件夹的所有内容。

当您尝试通过wget下载一个打开的Web文件夹(其中包含多个文件)时,wget将下载一个名为index.html的文件。该文件包含Web文件夹的文件列表。我的脚本将index.html文件中写入的文件名转换为网址,并使用wget清楚地下载它们。

在Ubuntu 18.04和Kali Linux上进行了测试,它也可能在其他发行版中工作。

用法:

  • 从下面提供的zip文件中提取getwebfolder文件

  • chmod +x getwebfolder(仅限第一次)

  • ./getwebfolder webfolder_URL

例如./getwebfolder http://example.com/example_folder/

Download Link

Details on blog