自分で作ろうと思ったんだけど作れなかったので、ヘルプをお願いします!
いずれはちゃんと予算を取ってサイトの機能として提供するつもりなんだけど、自分が今すぐほしくてしょうがないので。
要は、オトナ買いで全部揃ったら(メールかRSSで)アラートを飛ばしてくれるツールです。
ブックオフオンラインではオトナ買いのページに必ずこういう感じで購入可能冊数の表示があります。
HTMLのソースではこんなふうになってます。
<!--在庫数-->
<div class="GroupSummary"><div class="zaikoleft">在庫あり 17点/全19点</div></div>
<!--//在庫数//-->
だからここをスクレイピングで切り取って、在庫数と全冊数の比較を行ない、同じ(つまり全部揃ってれば)メールやRSSで通知するといいんじゃないかと思ってます。
もちろん定期的にチェックしないといけないので、どっかのサーバからcronで動かさないといけないですね。RSSだとCGI経由で呼び出せばキックするのはクライアント側でできるかな。
とりあえず見よう見まねで Web::Scraper を使って書いてみたんだけど、正規表現で判定するところが動かないんですよね。日本語のままだからだと思うんだけど。
以下、ソースです(注:まるで動かないです)。
use Web::Scraper;
use URI;my $scraper = scraper {
process 'div.zaikoleft', 'zaiko' => 'TEXT';
};my $uri = new URI('http://www.bookoffonline.co.jp/disp/BSfGroupSearchDetail.jsp?groupId=1053%20%20%20%20%20%20');
my $res = $scraper->scrape($uri);
if ($res->{zaiko} =~ /.+ (\d+)点/全(\d+)点+/) {
$zaiko = $1;
$all = $2;print "zaiko => $zaiko \n";
print "all => $all \n";if ($zaiko == $all) {
print "You can buy!!";
# send mail...
}
}exit;
「F」のオトナ買いがしたいんだけど、毎日チェックするのはめんどくさくて。きっと他のお客さんも同じだと思うとホントに申し訳ないです。
こうやれば動くよって教えていただけると助かります。
[追記]
iwazerさんに教えていただいて、以下のようにすれば動きました。
otona_checker.pl(UTF-8で保存してください)。
use Web::Scraper;
use URI;
use utf8;my $scraper = scraper {
process 'div.zaikoleft', 'zaiko' => 'TEXT';
};my $uri = new URI('http://www.bookoffonline.co.jp/disp/BSfGroupSearchDetail.jsp?groupId=1053%20%20%20%20%20%20');
my $res = $scraper->scrape($uri);
if ($res->{zaiko} =~ /.+\s+(\d+)点/全(\d+)点/) {
$zaiko = $1;
$all = $2;print "zaiko => $zaiko \n";
print "all => $all \n";if ($zaiko == $all) {
print "You can buy!!";
# send mail...
}
}exit;
実行すると、
[admin@sv1 test]$ perl otona_checker.pl
zaiko => 17
all => 19
となります。あとはURL(というかオトナ買いの商品ID)を引数にしてCGIで起動してRSSとして受け取れるようにしたり、あらかじめ登録しておいて毎朝cronでチェックするようにすれば目当てのモノはできると思います!











コメント(4件)[コメントだけのRSS]
お久しぶりです。
動作環境が分からないので外しているかもしれませんが、上記のパターンだけでしたら、正規表現を
$res->{zaiko} =~ /(\d+)[^\d]+(\d+)/
こう書けば、目的は達せられるかと。
実行環境がutf-8であれば頭で
use utf8;
と書いておいてスクリプトをUTF-8で保存して、正規表現を
$res->{zaiko} =~ /.+\s+(\d+)点/全(\d+)点/
の様にちょっとだけ直してもいけるかと。
Windowsでしたら、
use shiftjis;
なのかな?これは私のところでは、すぐに確認できないので未検証です(^^;
投稿者: iwazer | 2008年8月24日 23:32
iwazerさん、ありがとうございます!
動きました!!
これでなんとかなりそうです。本当にありがとうございます!
投稿者: 河野
|
2008年8月24日 23:44
「F」って六田登のですか?文庫版じゃないですけど、うちに全巻あります。ブックオフで買うぜ!というのならアレですけど、いりますか?
投稿者: 武士 | 2008年8月25日 08:34
そうそう、六田登の「F」です。昔は持ってたんですけどね。
文庫版で買い直そうかなと思ってます!
投稿者: 河野
|
2008年8月25日 10:28