2009-09-09
■ COMIC ZIN が通販サイトをプレオープンしたのでTOPページの新着ピックアップを取得するWeb::Scraperを手抜きな感じで作った

同人誌だけ取得する仕様。mk_body もうちょっとキレイに書けないものか。
#!/usr/bin/env perl use strict; use warnings; use utf8; use URI; use Web::Scraper 0.22; use YAML; my $url = 'http://shop.comiczin.jp/'; my $s = scraper { process '//a[contains(@class,"title_area") and string-length(@href)=59]', 'entry[]' => +{ title => 'text', link => ['@href', \&as_string], body => ['@href', \&as_string, sub { /=(\d+)$/; $1 }, \&mk_body], }; result qw( entry ); }; $s->user_agent->env_proxy; binmode STDOUT, ":utf8"; print Dump +{ title => 'COMIC ZIN 通信販売', link => $url, entry => $s->scrape(URI->new($url)), }; sub mk_body { my $id = $_; my $dir = int($id / 1000) * 1000; my $c = "http://shop.comiczin.jp/upload/save_image/_$dir/_"; my $m = "${c}m/${id}_"; my $mhtml = qq!<a href="${m}l.jpg"><img src="${m}m.jpg"></a>!; my $s = "${c}s/${id}_s"; my $shtml = join '', map { qq!<a href="$s${_}_l.jpg"><img src="$s${_}_s.jpg"></a>! } qw( 1 2 3 ); "$mhtml$shtml"; } sub as_string { $_->as_string }
Plaggerで使うときはこんな感じのYAML。
plugins: - module: Subscription::Config config: feed: - url: script:/path/to/shop_comiczin_jp.pl - module: CustomFeed::Script
コメント
トラックバック - http://plagger.g.hatena.ne.jp/SweetPotato/20090909