3. データを取得

WWW::Mixi::Scraperにはmixiアプリを取得するpluginは入っていないので取得するpluginを自分で作成

  • pluginをパッケージを作成

/usr/lib/perl5/site_perl/5.8.8/WWW/Mixi/Scraper/Plugin下に「SearchAppli.pm」パッケージを作成する
(パッケージ名は対象URLをcamelizeした名称となる)

  • scrapeのルールを記述

pluginは引数で与えられるhtmlをWeb::Scraperを利用して解析してるので
抜き出したい情報の記述ルールをつらつら記述

sub scrape {
 my ($self, $html) = @_;

 my %scraper;
 $scraper{entries} = scraper {
  process 'p.catch>a',
   app_id => '@href';
   process 'div>p.appName>strong',
   app_name => 'TEXT';
〜〜〜〜〜〜略〜〜〜〜〜〜〜
 $scraper{list} = scraper {
  process 'div.contents>ul.mainList02>li',
   'entries[]' => $scraper{entries};
  result qw( entries );
 };

 return $self->post_process(
  $scraper{list}->scrape(\$html) => \&_extract_name
 );
}

  • pluginの動作を確認

pluginが完成したら↓のような感じで@listにデータが格納される

my $mixi = WWW::Mixi::Scraper->new(
email => 'xxxxx', password => 'xxxx',
mode => 'TEXT'
);
my @cols = qw(app_id app_name category_name app_img app_logo user mymixi rate provider_id provider_name intro);
my @list = $mixi->parse('http://mixi.jp/search_appli.pl?sort=1&page=1&mode=ranking');