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
コメントする