web-dev-qa-db-ja.com

wgetを使用してWebサイトからすべての画像をダウンロードするにはどうすればよいですか?

wgetを手伝ってほしい、https://pixabay.com/のようなストック画像のウェブサイトからすべての画像をダウンロードしたいのですが、ターミナルにコードを入力しても何もダウンロードされず、jpgもありません、Zipはありません。

私はこのコードを使用しました:

wget -r -A jpg https://pixabay.com/

ウェブサイトによっては、jpgまたはZipを使用することがあります。私はより多くのウェブサイトで試しました:

http://www.freepik.com/
http://www.freeimages.com/
http://all-free-download.com/

まったくダウンロードしていません。

2
user738868

まず第一に、彼らはあなたに彼らの写真をダウンロードしてほしくないようです。演技しながらこれを考慮してください。

技術的には、カスタムタグ/属性を使用して写真をダウンロードできます。 HTMLソースをダウンロードしてカスタム属性を確認できます。残念ながら、wgetは(まだ)任意のカスタムタグをサポートしていません。基本的に2つのオプションがあります。

  1. https://unix.stackexchange.com/questions/258835/wget-follow-custom-url-attributes で提案されているように、この機能でwgetを拡張します
  2. ソースをダウンロードして、独自のポストプロセッサを作成します。

2番目のケースでは、インデックスファイルをダウンロードして、画像のURLを抽出する必要があります。彼らはあなたにwgetを使わせたくないので、彼らはそれがユーザーエージェント文字列であることを禁じていることを覚えておく必要があります。あなたは何かを偽造しなければなりません。 mozilla。 Linuxを使用している場合、次のようなものに写真が表示されます。

wget -O --user-agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:21.0) Gecko/20100101 Firefox/21.0"    "https://pixabay.com/en/photos/?q=cats&hp=&image_type=&cat=&min_width=&min_height=" | grep -o 'https://cdn.pixabay[^" ]*'

それをwgetにフィードバックするだけで、完了です。

..... | xargs wget

編集:@veraのソリューションも素晴らしいですが、画像検索の場合は画像の一部をダウンロードしているようです。 [コメントするのに十分なポイントがありません:)]

2
Gote Guru

動作するコマンドは次のとおりです。

wget -U "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:49.0) Gecko/20100101 Firefox/49.0" -nd -r --level=1  -e robots=off -A jpg,jpeg -H http://pixabay.com/
  • -U "...":WebサイトはHTTPエラー403(禁止)を返しています。これは、指定されたUser-Agentのリストのみがページにアクセスできるためです。一般的なブラウザ(Firefox、Chromeなど)のユーザーエージェントを指定する必要があります。私があなたにあげたのは実例です。
  • -nd(ディレクトリなし)from man: "再帰的に取得する場合は、ディレクトリの階層を作成しないでください。"
  • -e robots=off:robot.txtの除外に従わない
  • -H:ホスト間でファイルを取得できるようにします(ここでは、pixabay.comとcdn.pixabay.comは異なるホストと見なされます)

レート制限メカニズムがある場合は、次のオプションを追加します--wait 1

1
vera