Web::ScraperとWWW::MechanizeでCDBabyからデータ取得

前回記事 Web::Scraperを使ってみた - ragutarouの日記 の発展形。
"see more"というリンクがなくなるまでリンクを辿りデータを取得していく。

#!/usr/bin/perl
use strict;
use warnings;
use Web::Scraper;
use WWW::Mechanize;
use URI;
use YAML;

my $url = new URI('http://cdbaby.com/top/223');
my $mech = new WWW::Mechanize;
$mech->add_header(Connection => 'keep-alive');
$mech->get($url) or die $!;

# Scrape
my $scraper = scraper {
    process 'div.albumbox>h3>a', 'title' => 'TEXT', 'link' => '@href';
    process 'div.albumbox>div.price', 'price' => 'TEXT';
};
my $item = scraper {
    process 'div#content li', 'result[]' => $scraper;
};

# Follow Link & Print
do {
    my $res = $item->scrape($mech->uri());
    warn Dump $res;
} while ($mech->follow_link(text => 'see more'));