Amazon.comの500アイテムをAmazon.co.jpにある同じASINコードのアイテムの価格を比較するコードです。
パート1で、500アイテムを抽出します。
パート2で、Amazon.comとAmazon.co.jpの価格の比較をします。
パート3で、価格リストを見やすく加工します。
まずは、今回のパート1の解説です。
まずは、Amazon.comのAWSのIDと秘密鍵が必要です。IDなどの取得方法は、「Amazon海外輸出」の類の本に掲載されていますので、自分で探してください。
@Keywords
に、適当なキーワードを入れて下さい。(10個)
実行すると検索したASINが500個 STDOUTに出力されます。
今日はここまで。
ama.pl
#!/usr/bin/perl -w
use strict;
use warnings;
use Data::Dumper;
use RequestSignatureHelper;
use LWP::UserAgent;
use XML::Simple;
use constant myAWSId => ''; // AWSのIDを入れて下さい
use constant myAWSSecret => ''; // AWSの秘密鍵を入れて下さい
use constant myEndPoint => 'ecs.amazonaws.com';
# see if user provided ItemId on command-line
my $itemId = shift @ARGV || 'B00006JNN7';
# Set up the helper
my $helper = new RequestSignatureHelper (
+RequestSignatureHelper::kAWSAccessKeyId => myAWSId,
+RequestSignatureHelper::kAWSSecretKey => myAWSSecret,
+RequestSignatureHelper::kEndPoint => myEndPoint,
);
my @SearchIndexs = ( 'All' );
my @Keywords = ( 'japan import u' , 'japan import v' , 'japan import w' , 'japan import x' , 'japan import y' , 'japan import z' , 'dragonball' , 'test' , 'vanhalen' , 'japan trust' );
for (my $k=0; $k <= 9; $k++) {
for (my $i=1; $i <= 5; $i++) {
my $request = {
Service => 'AWSECommerceService',
Operation => 'ItemSearch',
AssociateTag => '', // amazon.comのアソシエイトタグを入れて下さい
SearchIndex => $SearchIndexs[0],
Keywords => $Keywords[$k],
ResponseGroup => 'ItemIds,SalesRank,OfferSummary',
ItemPage => $i . '' ,
};
# Sign the request
my $signedRequest = $helper->sign($request);
# We can use the helper's canonicalize() function to construct the query string too.
my $queryString = $helper->canonicalize($signedRequest);
my $url = "http://" . myEndPoint . "/onca/xml?" . $queryString;
my $ua = new LWP::UserAgent();
my $response = $ua->get($url);
my $content = $response->content();
#print "Recieved Response: $content \n";
my $xmlParser = new XML::Simple();
my $xml = $xmlParser->XMLin($content,ForceArray=>['Item']);
#print Dumper($xml) ;
foreach ( @{ $xml->{Items}{Item} } )
{
print $_->{ASIN} . "\n" ;
}
if ($response->is_success()) {
} else {
my $error = findError($xml);
if (defined $error) {
print "Error: " . $error->{Code} . ": " . $error->{Message} . "\n";
} else {
print "Unknown Error!\n";
}
}
sleep 1;
}
}
sub findError {
my $xml = shift;
return undef unless ref($xml) eq 'HASH';
if (exists $xml->{Error}) { return $xml->{Error}; };
for (keys %$xml) {
my $error = findError($xml->{$_});
return $error if defined $error;
}
return undef;
}
perlソースコード終わり