私はwgetを使用してWebサイトからすべての画像をダウンロードしますが、正常に機能しますが、サイトの元の階層とすべてのサブフォルダーが保存されるため、画像が点在しています。すべての画像を単一のフォルダにダウンロードする方法はありますか?私が現在使用している構文は次のとおりです。
wget -r -A jpeg,jpg,bmp,gif,png http://www.somedomain.com
これを試して:
wget -nd -r -P /save/location -A jpeg,jpg,bmp,gif,png http://www.somedomain.com
詳細は次のとおりです。
-nd
は、ディレクトリ階層の作成を防ぎます(つまり ディレクトリなし )。
-r
は、再帰的な取得を有効にします。詳細については、 再帰ダウンロード を参照してください。
-P
は、すべてのファイルとディレクトリが保存されるディレクトリプレフィックスを設定します。
-A
は、特定のファイルタイプのみを取得するためのホワイトリストを設定します。文字列とパターンが受け入れられ、両方をコンマ区切りリストで使用できます(上記参照)。詳細については、 ファイルの種類 を参照してください。
wget -nd -r -l 2 -A jpg,jpeg,png,gif http://t.co
-nd
:ディレクトリなし(すべてのファイルを現在のディレクトリに保存します。-P directory
はターゲットディレクトリを変更します)-r -l 2
:再帰レベル2-A
:受け入れられた拡張機能wget -nd -H -p -A jpg,jpeg,png,gif -e robots=off example.tumblr.com/page/{1..2}
-H
:スパンホスト(wgetはデフォルトで異なるドメインまたはサブドメインからファイルをダウンロードしません)-p
:ページの要件(各ページの画像などのリソースを含む)-e robots=off
:robotos=off
ファイルの一部であるかのようにコマンド.wgetrc
を実行します。これにより、ロボットの除外がオフになります。つまり、robots.txtとロボットメタタグを無視します(これに伴う影響を知っておく必要がありますので注意してください)。例:ディレクトリリストの例からすべての.jpg
ファイルを取得します。
$ wget -nd -r -l 1 -A jpg http://example.com/listing/
複数のWebサイトでこの問題を解決するシェルスクリプトを作成しました: https://github.com/eduardschaeli/wget-image-scraper
(wgetを使用してURLのリストから画像を削り取ります)
これを試してください:
wget -nd -r -P /save/location/ -A jpeg,jpg,bmp,gif,png http://www.domain.com
すべての追加情報が削除されるまで待ちます
マニュアルページによると、-Pフラグは次のとおりです。
-P prefix --directory-prefix = prefixディレクトリプレフィックスをprefixに設定します。ディレクトリプレフィックスは、他のすべてのファイルとサブディレクトリが保存されるディレクトリ、つまり取得ツリーの最上部です。デフォルトはです。 (現在のディレクトリ)。
これは、宛先のみを指定するが、ディレクトリツリーを保存する場所を指定することを意味します。 ツリーを1つのディレクトリにフラット化しない。前述のように、-ndフラグは実際にそれを行います。
将来、@ Jonは、フラグが何をするのかを説明して、何かがどのように機能するかを理解することが有益になるでしょう。
提案されたソリューションは、画像をダウンロードするのに最適であり、使用しているディレクトリにすべてのファイルを保存するのに十分な場合です。ただし、サイトの階層ツリー全体を複製せずに、指定したディレクトリにすべての画像を保存する場合は、Jonが提案した行に「cut-dirs」を追加してみてください。
wget -r -P /save/location -A jpeg,jpg,bmp,gif,png http://www.boia.de --cut-dirs=1 --cut-dirs=2 --cut-dirs=3
この場合、cut-dirsは、wgetがWebサイトの階層ツリーの深さの3レベルまでサブディレクトリを作成することを防ぎ、指定したディレクトリにすべてのファイルを保存します。深い構造を持つサイトを扱っています。