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');