サイトの全ページのスクリーンショットを自動で撮影

サイトの全ページのスクリーンショットを自動で撮影 #

仕事で横着したかったので作ってみたが、これ以上改良する気もないので、忘れないうちに貼付けておく。とりあえず 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 も誰かが作ってそうだし、今度調べてみます

See Also

Copyright © 髭。/ Hugo + hugo-book