本を読む

読書やコンピュータなどに関するメモ

「Open Source Topics around the Globe」をスクレイプ

 今日のWeb::Scraper。「Open Source Topics around the Globe」をPlagger::Plugin::CustomFeed::Scriptに食わせるスクリプト。

#!/usr/bin/perl
use strict;
use warnings;
use URI;
use Web::Scraper;
use DateTime;
use DateTime::Format::W3CDTF;
use YAML;
use Encode;
use utf8;

my $uri = 'http://www.opensource.co.jp/OSTopics.php';

sub parse_date {
    my ($y, $m, $d) = $_[0] =~ /\((\d+)年(\d+)月(\d+)日\)/;
    my $date = DateTime->new(year => $y,
                             month => $m,
                             day => $d,
                             time_zone => 'Asia/Tokyo' );
    DateTime::Format::W3CDTF->format_datetime($date);
}

my $items = scraper {
    process 'div.pageTitle', 'title' => 'TEXT';
    process 'ul.topList li', 'entries[]' => scraper {
        process 'a', 'title' => 'TEXT';
        process 'a', 'link' => ['@href', sub { $_->as_string } ];
        process 'a', 'date' => ['TEXT', \&parse_date];
    };
    result 'title', 'entries';
};
my $result = $items->scrape(URI->new($uri));
$result->{link} = $uri;
print encode('utf-8', Dump($result));

 <ul>の中で、<li>と同じレベルに<table>とか出てくる変なHTMLだけど、面倒なのでスルー。

コメント

コメントの投稿

管理者にだけ表示を許可する

トラックバック

http://emasaka.blog65.fc2.com/tb.php/429-eaf37af4

 | HOME | 

Categories

Recent Entries

Recent Comments

Recent Trackbacks

Appendix

emasaka

emasaka

フリーター。
連絡先はこのへん

Monthly


FC2Ad