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

Oma*_*mar 169 html get http wget download

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

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

在线HTTP目录

Min*_*Shi 305

解:

wget -r -np -nH --cut-dirs=3 -R index.html http://hostname/aaa/bbb/ccc/ddd/
Run Code Online (Sandbox Code Playgroud)

说明:

  • 它将下载ddd目录中的所有文件和子文件夹
  • -r :递归
  • -np:不要去上层目录,比如ccc/...
  • -nH :不保存文件到hostname文件夹
  • --cut-dirs=3:但是通过省略前3个文件夹aaa,bbb,ccc将其保存到ddd
  • -R index.html:不包括index.html 文件

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

  • 很好的答案,但请注意,如果有一个`robots.txt`文件不允许下载目录中的文件,这将无法正常工作.在这种情况下,你需要添加`-e robots = off`.请参阅https://unix.stackexchange.com/a/252564/10312 (15认同)
  • 谢谢!另外,根据[this](http://unix.stackexchange.com/questions/53397/wget-how-to-download-recursively-and-only-specific-mime-types-extensions-ie)您可以使用的FYI `-R`喜欢`-R css`来排除所有CSS文件,或使用`-A`之类的`-A pdf`来下载PDF文件. (11认同)
  • 谢谢!从[wget手册页](https://www.gnu.org/software/wget)获取的其他建议`从Internet服务器下载时,请考虑使用'-w'选项在访问服务器之间引入延迟.下载需要一段时间,但服务器管理员不会因为你的粗鲁而感到震惊 (5认同)
  • @hamish你可能需要先安装wget或者wget不在你的$PATH中。 (4认同)
  • 我收到此错误'wget'未被识别为内部或外部命令,可操作程序或批处理文件. (3认同)

mat*_*scb 40

由于使用VisualWGet的这篇文章,我能够让这个工作.它对我很有用.重要的部分似乎是检查旗帜(见图).-recursive

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

在此输入图像描述 在此输入图像描述

  • 不适用于某些 https。@DaveLucre,如果您尝试在 cmd 解决方案中使用 wget,您也可以下载,但我猜有些服务器不允许 (4认同)
  • 2020年3月上班啦! (4认同)
  • 最新版本的 vwget (2.4.105.0) 使用 wget 版本 1.11,这不适用于 HTTPS 站点。有关更多信息,请参阅这篇文章,不幸的是根本无法使其工作。/sf/ask/2013006271/ (4认同)
  • 刚刚发现 - 2017年12月.它工作正常.我在https://sourceforge.net/projects/visualwget/得到了它 (2认同)
  • 在Windows机器上工作正常,不要忘记检查答案中提到的选项,否则它将无法正常工作 (2认同)

nwg*_*gat 10

如果你有更大的文件可以添加--use-pget-n=10到命令中,你可以使用 lftp,这是下载的大军刀

lftp -c 'mirror --parallel=100 https://example.com/files/ ;exit'
Run Code Online (Sandbox Code Playgroud)

  • 工作完美而且速度非常快,这使我的互联网线路下载了数千个小文件。非常好。 (4认同)
  • 请解释一下这些参数的作用 (4认同)
  • -c = 继续,mirror = 在本地镜像内容,parallel=100 = 下载 100 个文件,;exit = 退出程序,use-pget = 将较大的文件分割成段并下载并行文件 (3认同)
  • 我对这个命令有疑问。我尝试下载的一些视频已损坏。如果我从浏览器正常单独下载它们,它就可以正常工作。 (3认同)
  • 投票最多的解决方案对任何文件都没有问题。都好! (3认同)

T.T*_*dua 9

无需软件或插件!

(仅在不需要递归深度时可用)

使用小书签。将此链接拖到书签中,然后编辑并粘贴此代码:

javascript:(function(){ var arr=[], l=document.links; var ext=prompt("select extension for download (all links containing that, will be downloaded.", ".mp3"); for(var i=0; i<l.length; i++) { if(l[i].href.indexOf(ext) !== false){ l[i].setAttribute("download",l[i].text); l[i].click(); } } })();
Run Code Online (Sandbox Code Playgroud)

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

  • 这是否会打开每个文件的“另存为”对话框? (3认同)

小智 6

wget -r -np -nH --cut-dirs=3 -R index.html http://hostname/aaa/bbb/ccc/ddd/
Run Code Online (Sandbox Code Playgroud)

man wget

'-r' '-- recursive '启用递归检索。有关更多详细信息,请参见递归下载。默认最大深度为5。

'-np''--no-parent' 递归检索时,请勿升至父目录。这是一个有用的选项,因为它可以确保仅下载特定层次结构下的文件。有关更多详细信息,请参见基于目录的限制。

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

'--cut-dirs = number' 忽略数字目录组件。这对于对将保存递归检索的目录进行精细控制很有用。

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

无选项-> ftp.xemacs.org/pub/xemacs/ -nH-> pub / xemacs / -nH --cut-dirs = 1-> xemacs / -nH --cut-dirs = 2->

--cut-dirs = 1-> ftp.xemacs.org/xemacs/ ...如果只想摆脱目录结构,此选项类似于'-nd'和'-P'的组合。但是,与“ -nd”不同,“-cut-dirs”不会随子目录丢失,例如,对于“ -nH --cut-dirs = 1”,beta /子目录将被放置到xemacs / beta中,如人们会期望的。

  • 一些解释会很好。 (3认同)
  • 使用 **VisualWget** 下载 **特定文件类型** 怎么样?是否可以仅下载 **VisualWget** 中目录及其子目录中的 **mp3** 文件? (3认同)