web-dev-qa-db-ja.com

ディレクトリをダウンロードするためのCURL

私はCURLを使って完全なウェブサイトのディレクトリをダウンロードしようとしています。次のコマンドは機能しません。

curl -LO http://example.com/

エラーが返されます:curl: Remote file name has no length!

しかし、これを実行すると、curl -LO http://example.com/someFile.typeが機能します。指定されたディレクトリ内のすべてのファイルをダウンロードする方法はありますか?ありがとう。

33
Foo

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オプションを使用する)必要があります。 ).

31
Gilles

常に私のために動作し、親を含まず、目的のディレクトリのみを取得するために再帰的に含まれます。

 wget --no-parent -r http://WEBSITE.com/DIRECTORY
26
stanzheng

この場合、curlは最良のツールではありません。次のように、wget-r引数とともに使用できます。

wget -r http://example.com/ 

これが最も基本的な形式であり、追加の引数も使用できます。詳しくは、manpageman wget)を参照してください。

13
moroccan

これは不可能です。 Webサーバがディレクトリの内容をあなたに返すための標準的な、一般的に実装された方法はありません。ほとんどのサーバーは、ディレクトリのHTMLインデックスを生成するように設定されていれば生成しますが、この出力は標準的なものではなく、また決して保証されたものでもありません。このHTMLを解析することもできますが、フォーマットはサーバーごとに変わるため、常に有効になるとは限りません。

5
Brad

あなたはFirefoxの拡張機能DownThemAll!を使うことができます。それはあなたがワンクリックでディレクトリ内のすべてのファイルをダウンロードできるようになります。カスタマイズも可能で、ダウンロードするファイルの種類を指定できます。これが私が見つけた最も簡単な方法です。

2
Asdf

あなたはここでウェブサイトリッパーの使用を見つけるかもしれません、これはすべてをダウンロードして、ローカル使用のために内容/内部リンクを修正します。良いものはここで見つけることができます: http://www.httrack.com

0
Gaurav Joseph