俺だけのために Ore! Tips!

wget で Web ページデータ一式をダウンロード

2004年12月26日 作業


とあるユーザーから、「テスト用サイトのデータ更新したので、本番サイトに反映させといて!」という指示があった。普通はファイルを一式送ってくるんと違うんかい?「○○にアップしといたから、一個一個ファイルをダウンロードしてくれ。FTP の ID/PW は教えられんから、ブラウザから HTTP でね。」なんて指示が許されるんかい!?
・・・と言いたいところだが、それはまあ、下請けの悲しいところで。(^^;
言われるとおり、テスト用サイト(http://www.hogehoge.co.jp/mach99/)から http プロトコルでデータを全てダウンロードし、それを本番サイトに FTP で put することにした。(本番サイトの ID/PW はわかってるんでね)

で、こういう時は wget を使うとよい。

まず、ダウンロードしたファイルを格納するディレクトリ(X:\NAF\Users\www.mach99.jp)に移動して、次に wget を実行するだけである。

↓以下のコマンドを実行する。
wget -r -L -l 10 http://www.hogehoge.co.jp/mach99/

これは、「http://www.hogehoge....を再帰回収(-r)で相対リンクだけ(-L)をたどり 深さ10まで(-l 10)でダウンロードする。」という意味だ。Web ページのデータをまとめて落とす場合はこの使い方が一般的。

じゃ、始め。

X:\NAF\Users\www.mach99.jp>wget -r -L -l 10 http://www.hogehoge.co.jp/mach99/
<略>
08:05:21 (74.81 KB/s) - `www.hogehoge.co.jp/mach99/images/card_05.jpg' saved [13176/13176]

--08:05:21--  http://www.hogehoge.co.jp/mach99/images/card_06.jpg
           => `www.hogehoge.co.jp/mach99/images/card_06.jpg'
Reusing existing connection to www.hogehoge.co.jp:80.
HTTP request sent, awaiting response... 200 OK
Length: 2,030 [image/jpeg]

100%[====================================>] 2,030         --.--K/s

08:05:21 (1.94 MB/s) - `www.hogehoge.co.jp/mach99/images/card_06.jpg' saved [2030/2030]


FINISHED --08:05:21--
Downloaded: 2,380,372 bytes in 171 files

X:\NAF\Users\www.mach99.jp>dir
 ドライブ X のボリューム ラベルは usr です
 ボリューム シリアル番号は 70D4-C60C です

 X:\NAF\Users\www.mach99.jp のディレクトリ

2004/12/26  08:03       <DIR>          .
2004/12/26  08:03       <DIR>          ..
2004/12/26  08:03       <DIR>          www.hogehoge.co.jp
               0 個のファイル                   0 バイト
               3 個のディレクトリ  68,880,900,096 バイトの空き領域


これだけ。

ダウンロードしたサイト名のディレクトリが出来、そこにダウンロードしたファイル一式が保管されている。ばっちり。

・・・が、一点注意点が。
wget は html ソースの中身を解析してリンク先のファイルを自動的に取得してくれるが、JavaScript の中のリンク指定は拾ってくれない。
例えば JavaScript 内で、On Mouse 時に表示する画像を、

function preloadImages() {
  if (document.images) {
    over_index_03 = newImage(/*URL*/'images/index_03_o.jpg');
    over_index_09 = newImage(/*URL*/'images/index_09_o.jpg');
<略>
    over_index_18 = newImage(/*URL*/'images/index_18_o.jpg');
    over_index_19 = newImage(/*URL*/'images/index_19_o.jpg');
    preloadFlag = true;
  }
}


のようにして指定していた場合、wget ではそれらの画像はダウンロードされないので、ダウンロードされたファイルを一式アップしても、マウスをボタン上に持って行くと壊れ画像が表示されてしまうようになる。

そういうものは、個別に直接ブラウザで指定するなどしてダウンロードするしかないのかなあ?俺の作った W3RS megane の http 解析エンジンはこのくらいの JavaScript なら中身を解析してリンクをつたうけどな・・・:-P

wget で JavaScript も解析させる方法があったら誰か教えてほしいのこころよ。

前ページに戻る


Copyright (C) 2004 S.Maaasamasa.