増子良太のブログです

増子良太が書いているブログです。テーマをしぼらず、思いついたものをただひたすら書いていきます。

wgetがまとめてダウンロードできるんです

   

ちょっと大人の事情でFTPアカウントがもらえなくて、でもどうしても画像を移行しないとサーバがなくなっちゃう。。。

っていう特殊な事例のお話なので、役にたつかわからないけど、メモ代わりに書いておきます。

仕方がないから、WebsiteExplorerというソフトを使って、サイトをクローリング。このソフトウェア、要はHTMLを読み込んでその中にあるリンクやなんかを根こそぎ取ってくるというツールです。

あんまり考えてなかったけど、このソフト使われたサイトは相当な負荷がかかるらしいので、人様のサイトには絶対使わないように!w

今回はもうどうしようもなかったので、やってみた。

ほんとうにサイトで使われている画像からページ構成まで根こそぎガッツリ取ってきます。お利口さん。

で、画像ファイルが入っているディレクトリをダウンロード!(良い子は真似しちゃダメ、絶対)

しかしながら、化けちゃうんですね〜、ファイル名が。正確には、URLエンコーディングしてくれちゃうんですね。お利口さん(余計なことしやがって)

ファイル名を見てみると「きらきら川①.jpg」なんて文字が。。。

なんてことしてくれるんだ!

他のツールもやってみたけど、やっぱり文字化けしたり、URLエンコーディングしてくれたり。

そんなこんなで苦戦していたら、ダウンロードしたい画像の一覧は手に入りました。mtだったので、<MTAssets type=”image”><MTAssetURL></MTAssets>ってな感じでURL一覧としてテンプレート作成。

んで、これをどうにかできないかと思った時にwgetってコマンドがあることを思い出した。

wgetでURL一覧からダウンロードできないものかと思っていたら、オプションがちゃんと用意されている。

-i, –input-file=FILE FILE の中に指定された URL をダウンロードする

素晴らしい!

どんなオプションがあるのかなと調べてみたら、以外と使えそうなものがあった。

–restrict-file-names=OS OS が許しているファイル名に制限する
-r, –recursive 再帰ダウンロードを行う
-l, –level=NUMBER 再帰時の階層の最大の深さを NUMBER に設定する (0 で無制限)

つまり、HTMLの文章とか放り込むと、そのなかのURLとかを読み込んでくれたりしちゃう。

wgetもかなりお利口さんでした。

まぁ今回の場合、結局これでもファイル名の化けを戻せなくて、Javaで独自ダウンローダー作っちゃうんですが、そのお話はまた月曜日にでも書いてみます。

 

 - サーバー関連