サイトの全ページのスクリーンショットを自動で撮影 #
仕事で横着したかったので作ってみたが、これ以上改良する気もないので、忘れないうちに貼付けておく。とりあえず Windows 版。Mac 版は、自宅で使う気になった時に作る
use strict;
use warnings;
use Carp;
use Win32::CaptureIE;
use WWW::CheckSite;
sub say { print @_, "\n"; }
my $uri = $ARGV[0] or croak 'usage: spidershot.pl [uri]';
$uri !~ m|^https?://| && ($uri = 'http://'.$uri);
my $wcs = WWW::CheckSite->new(
uri => $uri,
prefix => $uri,
validate => 0,
);
$wcs->validate;
my @lists = grep {/$uri/} $wcs->dump_links();
say 'Total: ',scalar(@lists);
my $i = 0;
StartIE(width=>800,height=>600);
for my $list ( @lists ) {
my $num = sprintf("%04d",$i++);
say $num,': ',$list;
Navigate($list);
my $img = CapturePage();
$img->Write('capt'.$num.'.jpg');
}
QuitIE;
__END__
全ページといっても、フォームに何か入力して submit とかはやらない。テストしたいわけではなかったので、入力する値準備するのがめんどかった
でも、スクロールキャプチャはするので、それなりに便利ではないかと思われ
[加藤泰文] (2008年06月16日 11時49分17秒)
うおっ,これは良いですね.Win32::CaptureIE なんてのがあるのか… IEのコンポーネントを内部的に使用してる? ここはぜひ Linux 版… (コラ)[ひげまる] (2008年06月16日 13時13分09秒)
うは。Linux も誰かが作ってそうだし、今度調べてみます