Hatena::ブログ(Diary)

ragutarouの日記 このページをアンテナに追加 RSSフィード

2008-01-21 さくらインターネットのレンタルサーバでWeb::Scraperをインストール

さくらインターネットのレンタルサーバでWeb::Scraperをインストール

| 23:21 | さくらインターネットのレンタルサーバで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/';

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

| 01:03 | 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'));