SweetPotato::Plagger このページをアンテナに追加 RSSフィード

2007-02-12

[][] scraper for CustomFeed::Config FlexComix ブラッド 02:14  scraper for CustomFeed::Config FlexComix ブラッド - SweetPotato::Plagger を含むブックマーク はてなブックマーク -  scraper for CustomFeed::Config FlexComix ブラッド - SweetPotato::Plagger  scraper for CustomFeed::Config FlexComix ブラッド - SweetPotato::Plagger のブックマークコメント

Web::Scraperを使って書き直した。

ブラッド読みとしてこれは作っておきたかった。

Yahoo!コミック内のFlexComix ブラッドのページを解析し,最新16作品を作品ごとにエントリ化する。

作品のコンテンツそのものが取得されるわけではないが,エントリにセットされたリンク先から作品は読める。

assets/plugins/CustomFeed-Config/flexcomix_blood.yaml

ページのHTMLがひどかった。長い格闘の末に書き上げた芸術的なXPath。

ページ構造が変わっていたようなのでXPathを修正した。

# author: SweetPotato
match: http://comics\.yahoo\.co\.jp/magazine/blood_0001\.html$
extract_xpath:
# updated: //td[@bgcolor='#ffe4ac' and @align='center']/small/text()
  icon: //table[@cellpadding='4' and .//img and count(.//tr)=4]//tr[1]//img/@src
  link: //table[@cellpadding='4' and .//img and count(.//tr)=4]//tr[2]//a/@href
  title: //table[@cellpadding='4' and .//img and count(.//tr)=4]//tr[2]//a/b/text()
  author: //table[@cellpadding='4' and .//img and count(.//tr)=4]//tr[3]//small/text()
  body: //table[@cellpadding='4' and .//img and count(.//tr)=4]//tr[4]//small
extract_after_hook: |
  use URI;
  $data->{link} = URI->new_abs($data->{link}, $args->{feed}->url)->as_string;
  $data->{author} = substr($data->{author}, 3);
  $data->{body} = $data->{updated}.' '.$data->{body};
  $data->{body} =~ s/<.*?>//g;

config.flexcomix_blood.yaml

plugins:
  - module: Subscription::Config
    config:
      feed:
        - url: http://comics.yahoo.co.jp/magazine/blood_0001.html
  - module: CustomFeed::Config