WWW::Scripter で JavaScript を使ったWebサイトへのアクセスを自動化する

Perl で WWW::Mechanize や Web::Scraper を使ってWebサイトをスクレイピングしたことはあるが、画面遷移に JavaScript を使っている場合、どうすればよいか調べてみた。


例えば以下のように JavaScript を使ってリンクしている場合。

<a href="javaScript:next(2)">次へ</a>


WWW::Scripter と WWW::Scripter::Plugin::JavaScript をインストールして*1

% cpanm -f WWW::Scripter
% cpanm -f WWW::Scripter::Plugin::JavaScript


こんな具合に WWW::Scripter の eval で JavaScript の関数を呼んでやると画面遷移することができた。

#!/usr/bin/env perl
use strict;
use warnings;
use WWW::Scripter;

my $URI = 'http://...';
my $w = 'WWW::Scripter'->new();
$w->use_plugin('JavaScript');
$w->get("$URI");

$w->submit_form(
	form_name => 'oss_query',
	fields => {
		c_keywords => '11gR2',
 	},
);

$w->eval('next(2)');
print $w->content;

__END__

*1:WWW::Mechanize はインストール済み