私はCURLを使って完全なウェブサイトのディレクトリをダウンロードしようとしています。次のコマンドは機能しません。
curl -LO http://example.com/
エラーが返されます:curl: Remote file name has no length!
。
しかし、これを実行すると、curl -LO http://example.com/someFile.type
が機能します。指定されたディレクトリ内のすべてのファイルをダウンロードする方法はありますか?ありがとう。
HTTPは実際にはディレクトリの概念を持っていません。最初の3つ以外のスラッシュ(http://example.com/
)は、相対URLの..
を除いて特別な意味を持ちません。そのため、サーバーが特定のフォーマットに従わない限り、「指定されたディレクトリ内のすべてのファイルをダウンロードする」方法はありません。
サイト全体をダウンロードしたい場合は、メインページのすべてのリンクを再帰的にたどるのが最善の策です。 Curlはできませんが、wgetはできます。ウェブサイトがあまりにも動的でないならば、これは動作します(特に、wgetはJavascriptコードによって構築されるリンクを見ません)。 wget -r http://example.com/
から始めて、より適切なオプション(再帰の深さ、除外リストなど)については、wgetマニュアルの「再帰的検索オプション」と「再帰的受け入れ/拒否オプション」を参照してください。
Webサイトが自動ダウンロードをブロックしようとしている場合は、ユーザーエージェント文字列(-U Mozilla
)を変更し、robots.txt
を無視する(空のファイルexample.com/robots.txt
を作成して-nc
オプションを使用する)必要があります。 ).
常に私のために動作し、親を含まず、目的のディレクトリのみを取得するために再帰的に含まれます。
wget --no-parent -r http://WEBSITE.com/DIRECTORY
この場合、curl
は最良のツールではありません。次のように、wget
を-r
引数とともに使用できます。
wget -r http://example.com/
これが最も基本的な形式であり、追加の引数も使用できます。詳しくは、manpage
(man wget
)を参照してください。
これは不可能です。 Webサーバがディレクトリの内容をあなたに返すための標準的な、一般的に実装された方法はありません。ほとんどのサーバーは、ディレクトリのHTMLインデックスを生成するように設定されていれば生成しますが、この出力は標準的なものではなく、また決して保証されたものでもありません。このHTMLを解析することもできますが、フォーマットはサーバーごとに変わるため、常に有効になるとは限りません。
あなたはFirefoxの拡張機能DownThemAll!を使うことができます。それはあなたがワンクリックでディレクトリ内のすべてのファイルをダウンロードできるようになります。カスタマイズも可能で、ダウンロードするファイルの種類を指定できます。これが私が見つけた最も簡単な方法です。
あなたはここでウェブサイトリッパーの使用を見つけるかもしれません、これはすべてをダウンロードして、ローカル使用のために内容/内部リンクを修正します。良いものはここで見つけることができます: http://www.httrack.com