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