暇なときは、LWP :: Simpleを使用して特定のWebサイトの製品ページをポーリングして製品の価格をチェックするスクリプトを作成することで、Perlの能力を向上させようとしています(私はPerlの初心者です)。このスクリプトは、そのアイテムで最後に表示された価格の非常に単純なバックログも保持します(価格は頻繁に変更されるため)。
スクリプトをさらに自動化して、ページのURLを最初のハッシュに明示的に追加する必要がないようにする方法があるかどうか疑問に思いました(つまり、キーワードの配列を保持し、Amazonで検索クエリを実行してページを見つけるか、価格?)。とにかく、Amazonの検索URLをコピーしてキーワードを解析するだけでなく、これを実行できる方法はありますか?(正規表現を使用したHTMLの処理は一般的に悪い形式であることを認識しています。必要なデータは1つだけなので、これを使用しました)。
#!usr/bin/perl
use strict;
use warnings;
use LWP::Simple;
my %oldPrice;
my %nameURL = (
"Archer Season 1" => "http://www.amazon.com/Archer-Season-H-Jon-Benjamin/dp/B00475B0G2/ref=sr_1_1?ie=UTF8&qid=1297282236&sr=8-1",
"Code Complete" => "http://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670/ref=sr_1_1?ie=UTF8&qid=1296841986&sr=8-1",
"Intermediate Perl" => "http://www.amazon.com/Intermediate-Perl-Randal-L-Schwartz/dp/0596102062/ref=sr_1_1?s=books&ie=UTF8&qid=1297283720&sr=1-1",
"Inglorious Basterds (2-Disc)" => "http://www.amazon.com/Inglourious-Basterds-Two-Disc-Special-Brad/dp/B002T9H2LK/ref=sr_1_3?ie=UTF8&qid=1297283816&sr=8-3"
);
if (-e "backlog.txt"){
open (LOG, "backlog.txt");
while(){
chomp;
my @temp = split(/:\s/);
$oldPrice{$temp[0]} = $temp[1];
}
close(LOG);
}
print "\nChecking Daily Amazon Prices:\n";
open(LOG, ">backlog.txt");
foreach my $key (sort keys %nameURL){
my $content = get $nameURL{$key} or die;
$content =~ m{\s*\$(\d+.\d+)} || die;
if (exists $oldPrice{$key} && $oldPrice{$key} != $1){
print "$key: \$$1 (Was $oldPrice{$key})\n";
}
else{
print "\n$key: $1\n";
}
print LOG "$key: $1\n";
}
close(LOG);