Web::Scraperで新ジャグラBBをスクレーピング
スポンサードリンク
昔、ジャグラ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が空っぽのままになるので、もう一段スクレーピングして動画紹介ページの説明部分を取る必要があるんですよね。
スポンサードリンク
トラックバック(0)
トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/3565





![: Amazon.co.jp: プラスティック・メモリーズ 1【完全生産限定版】(イベントチケット優先販売申込券付) [Blu-ray]](/lists/_9/B00VWX66E8.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 2【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX66K2.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 3【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX6MV0.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 4【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX66IO.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 5【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX6Y0E.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 6【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX69D6.jpg)


コメントする