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'));
さくらインターネットのレンタルサーバでWeb::Scraperをインストール
Webサービスを作ってみようということで、ついにレンタルサーバ(さくらインターネット)を借りました。まずはsshでログインして、PerlモジュールのWeb::Scraperを使えるようにします。
一般ユーザでCPANインストールができるようにする
iandeth. - 一般ユーザ環境におけるCPANモジュールの使い方 を参考に設定
〜以下、必要なフォルダとMyConfig.pmを作成〜
$ cd ~
$ mkdir perl
$ mkdir -p .cpan/CPAN
$ vi .cpan/CPAN/MyConfig.pm
〜MyConfig.pm の以下の部分を修正〜
$CPAN::Config->{cpan_home} = undef;
$CPAN::Config->{makepl_arg} = 'PREFIX=~/perl';
$CPAN::Config->{histfile} = "$ENV{HOME}/.cpan/histfile";
CPANよりモジューインストール
いきなり Web::Scraper をインストールしようとすると HTML::TreeBuilder::XPath が無いよと言われるので、以下の順でインストール
perl -MCPAN -e shell
cpan> install HTML::TreeBuilder::XPath
cpan> install Web::Scraper
perlからインストールしたモジュールを呼び出す設定
use Web::Scraper; 行の前に以下を追加する
use lib '/home/ユーザ名/perl/lib/perl5/site_perl/5.8.8/';