2010-10-17 17:55:07 +0000 2010-10-17 17:55:07 +0000
40
40

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

私はCURLを使用して完全なウェブサイトのディレクトリをダウンロードしようとしています。以下のコマンドを実行してもうまくいきません。

curl -LO http://example.com/

エラーを返します。curl: Remote file name has no length!.

0x1&

エラーを返します。curl -LO http://example.com/someFile.type は動作します。指定されたディレクトリ内のすべてのファイルをダウンロードする方法について何か考えがありますか?ありがとうございます。

回答 (6)

40
40
40
2014-01-31 16:44:52 +0000

私の場合は常に動作します。親を含まず、目的のディレクトリだけを取得するための再帰的な処理も含まれています。

wget --no-parent -r http://WEBSITE.com/DIRECTORY
32
32
32
2010-10-17 19:59:25 +0000

HTTP にはディレクトリという概念はありません。最初の3つ(http://example.com/)以外のスラッシュは、相対URLの..以外では特別な意味を持ちません。なので、サーバが特定の形式に従わない限り、「指定したディレクトリにあるすべてのファイルをダウンロードする」という方法はありません。

サイト全体をダウンロードしたい場合、最善の策はメインページ内のすべてのリンクを再帰的に辿ることです。Curlではできませんが、wgetではできます。これは、ウェブサイトがあまり動的でない場合に有効です(特に、wget は Javascript コードによって構築されたリンクを表示しません)。wget -r http://example.com/から始めて、より関連性の高いオプション(再帰の深さ、除外リストなど)については、wgetマニュアルの「再帰的な検索オプション」と「再帰的な受け入れ/拒否オプション」を参照してください。

ウェブサイトが自動ダウンロードをブロックしようとする場合は、ユーザーエージェント文字列(-U Mozilla)を変更し、robots.txtを無視する必要があるかもしれません(空のファイルexample.com/robots.txtを作成し、wgetがサーバーからダウンロードしようとしないように-ncオプションを使用します)。

17
17
17
2014-01-23 11:50:03 +0000

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

wget -r http://example.com/

これが最も基本的な形で、追加の引数も使えます。詳しくは manpage (man wget) を参照してください。

5
5
5
2010-10-17 17:59:25 +0000

これは不可能です。ウェブサーバがディレクトリの内容をあなたに返す標準的な方法は、一般的に実装されていません。ほとんどのサーバは、設定されていればディレクトリの HTML インデックスを生成しますが、この出力は標準的なものではありませんし、いかなる手段でも保証されているものではありません。この HTML を解析することもできますが、形式はサーバによって異なり、常に有効になるとは限らないことを覚えておいてください。

2
2
2
2013-01-20 00:08:28 +0000

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

0
0
0
2014-01-23 12:44:17 +0000

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