回答:
解決:
wget -r -np -nH --cut-dirs=3 -R index.html http://hostname/aaa/bbb/ccc/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/
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.
robots.txt
ですが、ディレクトリ内のファイルのダウンロードを許可しないファイルがある場合、これは機能しません。その場合は、追加する必要があります-e robots=off
。unix.stackexchange.com/a/252564/10312を
VisualWGetを利用したこの投稿のおかげで、これを機能させることができました。それは私にとってはうまくいきました。重要な部分はフラグをチェックすることだと思われます(画像を参照)。-recursive
-no-parent
フラグが重要であることもわかりました、そうでなければ、それはすべてをダウンロードしようとします。
--no-parent
は何をしますか?
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に配置されます。人は期待するでしょう。
wget
貴重なリソースであり、私が自分で使用するものです。ただし、アドレスにwget
構文エラーとして識別される文字がある場合があります。私はそれに対する修正があると確信していますが、この質問は具体的には質問しなかったのでwget
、このページに間違いなくつまずいて、学習曲線を必要としない迅速な修正を探す人々に代替案を提供すると思いました。
これを実行できるブラウザ拡張機能はいくつかありますが、ほとんどの場合、ダウンロードマネージャーをインストールする必要があります。これは、常に無料であるとは限らず、目障りで、多くのリソースを使用する傾向があります。これらの欠点のいずれもないHERESのもの:
「ダウンロードマスター」は、ディレクトリからのダウンロードに最適なGoogle Chromeの拡張機能です。ダウンロードするファイルタイプをフィルタリングするか、ディレクトリ全体をダウンロードするかを選択できます。
https://chrome.google.com/webstore/detail/download-master/dljdacfojgikogldjffnkdcielnklkce
最新の機能リストとその他の情報については、開発者のブログのプロジェクトページにアクセスしてください。
これを使えます Firefoxアドオンを、HTTPディレクトリ内のすべてのファイルをダウンロードできます。
https://addons.mozilla.org/en-US/firefox/addon/http-directory-downloader/
(再帰的なdeptchが必要ない場合にのみ使用可能)
ブックマークレットを使用します。このリンクをブックマークにドラッグしてから、このコードを編集して貼り付けます。
(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(); } } })();
(ファイルをダウンロードする場所から)ページに移動し、そのブックマークレットをクリックします。
wgetは通常、この方法で機能しますが、サイトによっては問題が発生したり、不要なHTMLファイルが大量に作成されたりする場合があります。この作業を簡単にし、不必要なファイルの作成を防ぐために、私が自分で書いた最初のLinuxスクリプトであるgetwebfolderスクリプトを共有しています。このスクリプトは、パラメーターとして入力されたWebフォルダーのすべてのコンテンツをダウンロードします。
複数のファイルが含まれているwgetで開いているWebフォルダーをダウンロードしようとすると、wgetはindex.htmlという名前のファイルをダウンロードします。このファイルには、Webフォルダーのファイルリストが含まれています。私のスクリプトは、index.htmlファイルに記述されたファイル名をWebアドレスに変換し、wgetを使用してそれらを明確にダウンロードします。
Ubuntu 18.04とKali Linuxでテストされていますが、他のディストリビューションでも動作する可能性があります。
使用法 :
以下のzipファイルからgetwebfolderファイルを抽出します
chmod +x getwebfolder
(初回のみ)
./getwebfolder webfolder_URL
といった ./getwebfolder http://example.com/example_folder/
-R
ように-R css
、すべてのCSSファイルを除外し、または使用する-A
ように-A pdf
のみダウンロードPDFファイルへ。