web-dev-qa-db-ja.com

ターミナルを使用して(Webページではなく)Webサイトからすべての画像をダウンロードするにはどうすればよいですか?

Photos.tumblr.comなどのURLを入力するコマンドが必要です。このコマンドは、サイトのホームページの画像だけでなく、このサイトのすべての写真をフォルダーにダウンロードします。このコマンドは、photos.tumblr.com/ph1/1.png/photos.tumblr.com/ph3/4.jpgなど、サイトのすべての部分から画像をダウンロードする必要があります。

このURLを使用した例を見せてください: http://neverending-fairytale.tumblr.com/ そして質問に答える前にそれをテストしてください

4
Zignd

以下を使用できます。

wget -r -A=.jpg,.png http://website.com

このコマンドを使用すると、すべてのJPGファイルとPNGファイルを取得できますが、サイトから禁止される可能性があります。

したがって、使用する場合:

wget --random-wait --limit-rate=100k -r -A=.jpg,.png http://website.com

ダウンロードと制限速度の設定の間にランダムな時間待機する画像が表示されます。

6
Vic Abreu

ウェブサイト全体をダウンロードwget -r -p -l inf -np)、次に(または同時に)シェルスクリプトを実行して、イメージ以外のすべてのファイルを削除します(fileコマンドを使用して、ファイルがイメージかどうかを確認できます)。

-A/-Rwgetのオプションは信頼できません。 URLの拡張子のみをチェックします(.jpg、.jpeg、.pngなどでフィルタリングできます)が、これらが存在する必要はありません。)

1
Ankur

ほとんどのワンライナーコマンドが提供するブルートフォースアプローチを使用しても、良い結果を得るのはほとんどできません(ただし、wgetオプションを使用してサイト全体を大量に取得します)。

何らかの形式の条件付き選択とループを使用して、実際に一致し、必要な画像に移動する種類のリンクをたどるスクリプトを作成することをお勧めします。

私が通常従う戦略:

  • ブラウザで、目的の最初のページに移動し、ソースコードを表示します。
  • 画像を右クリック-> [画像のプロパティ]-> 'src ='属性と画像タグを見つけます。
  • これらのタグ/リンク/ hrefの全体的なパターンを取得し、いくつかの正規表現を使用します(grep -o)リンクを解析します。
  • これらのリンクをいくつかのコマンドとともに使用して、画像をダウンロードします。
  • 他のページに移動するページ上のリンクも取得します。
  • 繰り返す。

これは確かにそれをすべて取るワンライナーよりもはるかに複雑ですが、経験は啓発的です。ウェブスクレイピングはそれ自体が芸術です。

そのためにも、Pythonをお勧めしますが、必要に応じてシェルスクリプト(bash)、または任意のスクリプト言語(Ruby、PHP、Perlなど)を使用して実行することは完全に可能です。

お役に立てれば。

1
heltonbiker

次のようなgitリポジトリを使用できます。

https://github.com/nixterrimus/tumbld

同様の機能を提供する他のリポジトリもあります。

0
Mark Anderson