ChatGPT解决这个技术问题 Extra ChatGPT

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

我可以访问一个在线 HTTP 目录。我已尝试通过 wget 下载所有子目录和文件。但是,问题在于,当 wget 下载子目录时,它会下载包含该目录中文件列表的 index.html 文件,而不会下载文件本身。

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

https://i.stack.imgur.com/uNOuS.png

这个答案对我来说很棒:stackoverflow.com/a/61796867/316343

g
gibbone

解决方案:

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

解释:

它将下载 ddd 目录中的所有文件和子文件夹

-r :递归

-np : 不去上层目录,比如 ccc/...

-nH :不将文件保存到主机名文件夹

--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/


谢谢!此外,根据 this 仅供参考,您可以使用 -R(如 -R css)排除所有 CSS 文件,或使用 -A(如 -A pdf)仅下载 PDF 文件。
谢谢!来自 wget man page When downloading from Internet servers, consider using the ‘-w’ option to introduce a delay between accesses to the server. The download will take a while longer, but the server administrator will not be alarmed by your rudeness. 的其他建议
我收到此错误“wget”不被识别为内部或外部命令、可运行程序或批处理文件。
@hamish 您可能需要先安装 wget 或者 wget 不在您的 $PATH 中。
很好的答案,但请注意,如果有一个 robots.txt 文件不允许下载目录中的文件,这将不起作用。在这种情况下,您需要添加 -e robots=off 。请参阅unix.stackexchange.com/a/252564/10312
m
mateuscb

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

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

https://i.stack.imgur.com/pi8lr.png


刚刚发现这个 - 2017 年 12 月。它工作正常。我在 sourceforge.net/projects/visualwget 收到的
在 Windows 机器上工作正常,不要忘记检查答案中提到的选项,否则它将无法工作
不适用于某些 https。 @DaveLucre 如果您在 cmd 解决方案中尝试使用 wget,您也可以下载,但我猜有些服务器不允许
2020年3月上班!
最新版本的 vwget (2.4.105.0) 使用 wget 版本 1.11,这不适用于 HTTPS 站点。有关更多信息,请参阅此帖子,不幸的是,它根本无法正常工作。 stackoverflow.com/questions/28757232/…
n
nwgat

你可以使用 lftp,如果你有更大的文件,你可以将 --use-pget-n=10 添加到命令中

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

工作得非常好而且非常快,这让我的互联网线路下载了数千个小文件。很好。
请解释一下这些参数的作用
-c = 继续,mirror = 在本地镜像内容,parallel=100 = 下载 100 个文件,;exit = 退出程序,use-pget = 将更大的文件分割成段并下载并行
我有这个命令的问题。我试图下载的一些视频坏了。如果我从浏览器正常并单独下载它们,它会完美运行。
投票最多的解决方案对任何文件都没有问题。都好!
R
Ryan R
wget -r -np -nH --cut-dirs=3 -R index.html http://hostname/aaa/bbb/ccc/ddd/

来自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 中,如人们会期望。


一些解释会很棒。
使用 VisualWget 下载特定文件类型怎么样?是否可以仅下载 VisualWget 中目录及其子目录中的 mp3 文件?
T
T.Todua

无需软件或插件!

(仅当您不需要递归深度时才可用)

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

(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(); } } })();

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


这会为每个文件打开 save as 对话框吗?
P
Peter

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

有一些浏览器扩展可以做到这一点,但大多数都需要安装下载管理器,它们并不总是免费的,往往令人眼花缭乱,并且使用大量资源。继承人没有这些缺点:

“下载大师”是谷歌浏览器的扩展,非常适合从目录下载。您可以选择过滤要下载的文件类型,或下载整个目录。

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

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

http://monadownloadmaster.blogspot.com/


R
Rushikesh Tade

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

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


这个插件没有做任何事情。谢谢
B
Byte Bitter

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