mysite.com/img/ ディレクトリ内のすべての画像をダウンロードする Wget のようなユーティリティ

mysite.com/img/ ディレクトリ内のすべての画像をダウンロードする Wget のようなユーティリティ

mysite.com/img/ ディレクトリへのアクセスがブロックされています。

n.jpgただし、そのディレクトリ内のすべての画像は、n が n 番目の画像である形式になっています。

アクセスはmysite.com/img/n.jpgブロックされていません

mysite.com/img/1.jpg画像 1~500 (からmysite.com/img/500.jpg)を保存する方法はありますか?

私はUbuntu 11.10を使用しています

答え1

最も簡単な解決策は、おそらくbashの括弧展開を使用することです。

wget http://mysite.com/img/{1..500}.jpg

ループを実行するオプションもあり、各リクエストの間に少し待機時間を置くことができます。

for n in $(seq 1 500); do
  wget http://mysite.com/img/${n}.jpg
  sleep 0.1
done

(上記はシェル内で直接実行できます。)

答え2

これを行う別の方法もあり、wget私はそれを 1 つのサイトでうまく使用しました。また、以下の手順を他のサイトでも変更できるはずです。この方法では、URL のリストを生成し、そのリストを に入力しますwget

1) 例えば、63冊のPDF雑誌をすべてダウンロードしたいとします。フルサークルマガジン(Ubuntuの雑誌)ですが、ダウンロードマネージャーでは一度にすべてダウンロードすることはできません。リンク最初の PDF ファイルを確認し、他の雑誌のリンクが同じ URL 形式になっていることをすぐに確認します。

2) パート 1 で得た知識を使って、スクリプトを使って URL を生成できます。以下のスクリプトは、until ループを実行しますが、これは私が変更したものです (作成者の功績です)。このスクリプトを変更するには、 のuntil [ $i = 63 ]部分に雑誌の数を入れ、その後に正しい URL を入れecho、ループを実行するたびに変更されるように、 がエコーされる URL の正しい部分にあることを確認します"$i"。URL が生成され、テキスト ファイルに追加されます。これは、スクリプトが実行されると一瞬で行われ、セットアップは思ったほど複雑ではありません。

スクリプトをテキストエディタに保存し、実行可能にして実行します。違う私の例よりもサイトの方が優れています。

#!/bin/bash
   i=0
   until [ $i = 63 ] ; do
    i=$(($i+1))
    echo "http://dl.fullcirclemagazine.org/issue"$i"_en.pdf" >> url.txt
done 

3) 最後に、url.txt現在の作業ディレクトリにあると仮定して、次を実行します。

wget -i url.txt  

-P ~/MyDirectoryダウンロードしたファイルを他の場所に保存したい場合は、url.txt

実際に動作します。試してみる場合、ctrl cすべてをダウンロードしたくない場合は Enter キーを押して中止してください。

関連情報