M.C.P.C.

―むり・くり―プラスコミュニケーション(更新終了)


| トップページ |

2011年4月23日 17:58

Web::Scraperで新ジャグラBBをスクレーピング

このエントリーをはてなブックマークに追加 mixiチェック

昔、ジャグラBBをスクレーピングして、それからジャグラBBの野良RSSを作り、更にIGASに出展してたJaGRAのブースに突撃して名刺渡して野良RSS作っているよーと言ってきて、「これで今後JaGRA BBのリニューアル時に公式にRSSが付いてくれるだろう。ミッション・コンプリート。」とか思っていたらリニューアル時にRSSが付かずHTML構造が変更になって野良RSSが動かなくなってすげえやる気なくしてかなり放置していました。

M.C.P.C.: ジャグラBBのサイトがリニューアルして構造が変わっていたので、当サイトで生成している野良RSSが空になっています

んで、今回スピードコーディングしようと思って例題として新JaGRA BBをスクレーピングすることにしました。持ち時間30分で最終的にRSS出力まで目指したかったのですが、残念ながら時間切れでスクレーピングだけにとどまりました。

下のスクリプトは、JaGRA BBのトップページの「ニュース・ピックアップ」の番組リストをスクレーピングします。

#!/usr/bin/perl
use strict;
use warnings;
use utf8;
use DateTime::Format::HTTP;
use URI;
use Web::Scraper;
use YAML;
 
my $uri = URI->new('http://www.jagrabb.net/');
my $scraper = scraper {
  process '//div[@id="news"]//div[@class="box"]', 'items[]' => scraper {
    process '.title', title => 'TEXT';
    process '.title>a', url => '@href';
    process '.date', date => [ 'TEXT', sub { s/^.+公開日//;s{[^\d]}{-}g; return DateTime::Format::HTTP->parse_datetime($_)->set_time_zone('Asia/Tokyo'); } ];
  }
};
my $result = $scraper->scrape($uri);
print Dump $result;
 
exit;
 
__END__

ここまで出来たら、XML::Feedに接続してRSS自体は簡単に出力できる。しかし、このままだと、RSSでいうDescriptionが空っぽのままになるので、もう一段スクレーピングして動画紹介ページの説明部分を取る必要があるんですよね。

投稿 大野 義貴 [DTP] | |

トラックバック(0)

トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/3565

コメントする