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 キーを押して中止してください。