ウェブサイトをコピーしたい

一昨日の続き。wget1.12でCSSから参照している画像もちゃんととれるのはいいんだけど、JavaScriptで参照している画像がとれないんです。マウスオーバの画像とか、先読みしている画像ファイルなどですね。
wgetのFAQにもちゃんと書いてあるんだけど、将来的にはなんとかするかもしれないけど、だってwgetってGUIじゃないし、JavaScriptなんかしらねぇし、といった感じ。

なので、別の手段で直接サーバから取り出すことにする。

WebDAV+Perl

取り出したいブツはZope上にあるのでWebDAVが使えるはず。大昔にかいたHTTP::DAVをつかったスクリプトを流用しようとしたんですが、なぜか認証が通らない。なぜだ。。しばらく調べるも断念。

ftp

じゃ、ftpだ。expectをつかってスクリプトをかくも、LinuxSolarisftpクライアントには再帰的にファイルをgetする能力がないことが判明。ディレクトリ以下をとってきてくれないんですよね。

wgetftp

悩むことしばし。wgetでもftpがお話できることを思い出しました。こうすることで目的のディレクトリ以下を全部getすることに成功。

wget \
   --recursive \
   --no-host-directories \
   --directory-prefix=/usr/local/apache2/binaries \
   ftp://user:password@localhost:8021/dist_directorty 

結局wgetに戻ってきました。wget偉いなぁ。

結局

Zope+Ploneゆえに動的にレンダリングしているコンテンツがほとんど。なのでwgetでサイトをひとさらいしてからwget+ftpでとれなさそうなcssとか画像とかを補足して目的を達成できました。やれやれ。