Web::Scraperを用いてスクレイピング

ウェブから必要な情報を集めることをスクレイピングというらしい。

スクレイピングとは編集


PerlではWeb::Scraperを使うと便利らしい。
参考にさせていただいたのはこちらのページ
http://e8y.net/mag/013-web-scraper/

さっそくJリーグの試合記録をスクレイピングしてみることに。
http://www.j-league.or.jp/SS/jpn/news/2010010001_W0501_J.html
このページから試合情報のみを取り出してみる。

#!/usr/bin/perl
use strict;
use warnings;

use Web::Scraper;
use URI;

binmode(STDOUT,"utf8");

my $scraper = scraper{
        process 'td','test[]'=>'TEXT';
        result 'test';
};

my $uri = new URI('http://www.j-league.or.jp/SS/jpn/news/2010010001_W0501_J.html');

my $res = $scraper->scrape($uri);
my @results =  @$res;
@results = grep {$_ !~/^\s$/ } @results; #空文字除去

foreach my $element (@results){
        print $element."\n";
}

出力結果(一部)

.....
第34節
12/04
(土)
15:34
仙台
1-1
川崎F
ユアスタ
スカパー・e2(J sports Plus)
15:34
山形
1-1
鹿島
NDスタ
スカパー(スカチャンHD、スカチャン)/e2スカチャン
15:34
浦和
0-4
神戸
埼玉
スカパー(スカチャンHD、スカチャン)/e2スカチャンHD/BS/テレ玉
15:33
横浜FM
0-2
大宮
日産ス
スカパー(スカチャンHD、スカチャン)/スカパー・e2(フジテレビONE)
15:34
新潟
3-1
湘南
東北電ス
スカパー(スカチャンHD、スカチャン)/e2スカチャン/NHK新潟
15:33
清水
0-3
G大阪
アウスタ
スカパー(スカチャンHD、スカチャン)/e2スカチャン/静岡放送

....

こういう情報をCVS形式とかで保存すればデータマイニングとかのネタになりそうです。