use strict; use Digest::MD5 qw(md5 md5_hex md5_base64); use LWP::Simple; ## ----------------------------------------------------------------------------- ## URL リストを読み込む & img フォルダ配下へフォルダ作成 ## ----------------------------------------------------------------------------- my $width = $ARGV[1] || 1000; my $wait = $ARGV[2] || 2; my $savepath = "./imgs"; mkdir $savepath unless -e $savepath; my @urls; open my $fh, '<', $ARGV[0] || die 'perl screen_captcha.pl url一覧ファイル名 横幅px数 wait秒数で実行して下さい\n'; while (<$fh>) { chomp; my $uri = $_; my $digest = md5_hex($_); push @urls, { url => $_, file => "$savepath/$digest\.jpg" }; } close $fh; ## ----------------------------------------------------------------------------- ## 対応表ファイルを書き出す ## ----------------------------------------------------------------------------- open my $ofh, '>', "md5_$ARGV[0]"; for ( sort @urls ) { print $ofh qq{$_->{file},$_->{url}\n}; } close $ofh; ## ----------------------------------------------------------------------------- ## ウェブショットを作成 ## ----------------------------------------------------------------------------- my $idx = 1; my $size = "$width\x1"; for my $url (@urls) { my $begin = time; eval { ## shockwave / flash の有無を判定 my $content = get( $url->{url} ); if ( $content =~ m!http://download.macromedia.com/pub/shockwave!msx ) { if ( $content =~ m!Shockwave\s*Player!msxi ) { $wait = 10; print "$idx [shockwave],$url->{url},shockwaveが含まれています。正常に画像出力されていないかも\n"; } else { $wait = 5; print "$idx [flash],$url->{url}\n"; } } else { print "$idx [normal],$url->{url}\n"; } my $cmd = "CrenaHtml2jpg\\CrenaHtml2jpg.exe -o\"$url->{file}\" -fjpeg -q50 -p -w$size -s$size -t25 -l$wait -u\"$url->{url}\""; `$cmd`; $idx++; }; my $end = time; my $processingtime = $end - $begin; print $@ ? "->FAILED : $@\n" : "->SUCCESS : $processingtime sec : $url->{file}\n"; } 1;