Amazonのランキングを自動で記録しよう

Mona本ですが、やはりわが子のような感覚なのでついついAmazonへ行ってランキングを見てしまいます。
日に何回も見ていると非効率だなと気づいたので、いい加減なスクリプトをでっち上げてみました。

使い方

./monabookrank.pl >>monarank.csv


これをある一定時間ごとにcronやタスクスケジューラで実行すると monarank.csv に以下の形式で日付時刻とそのときの順位が追記されていきます。

2005/04/29 22:58:04,83


ソース
変数urlを順位を知りたい商品のAmazon詳細ページのURLに設定してください。

#!/usr/bin/perl -w
use strict;
use LWP::Simple;
use HTML::TreeBuilder;

my $url = 'http://www.amazon.co.jp/exec/obidos/ASIN/4839917639/qid%3D1114779653/250-6926639-1062628';

main();

sub main {
    my $data = get($url) or die "connect error $url";
    my $tree = HTML::TreeBuilder->new;
    $tree->parse($data);

    for ($tree->find_by_tag_name("font")) {
        if ($_->as_text =~ /^.*Amazon.co.jp 売上ランキング: (\d+)\s.*$/) {
            my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time);
            my $now = sprintf("%04d/%02d/%02d %02d:%02d:%02d", $year + 1900, $mon +1, $mday, $hour, $min, $sec);
            print "$now,$1\r\n";
            return;
        }
    }
}