- blogs:
- cles::blog
« EclipseでPerlを使う :: 信頼度成長曲線をExcelで書く »
2007/11/18

AmazonECSのXMLをXML::XPathで処理する



ちょっとワケあってPerlでECSからデータを取得するスクリプトを作らなければならなくなった。Perlを使うのは5年ぶりくらい、当時はXMLの処理するのも正規表現で無理やりというなんとも恥ずかしいコードを書いていました。
その後、XSLを使う機会があってXPathの便利さに味を占めてしまったので、PerlでもXPathを使って処理してみることにします。ということで、XML::XPathを使ってAmazonECSからのデータを処理してみることにします。
† 簡単なサンプル
手始めにECSを使って売れ筋Top100の情報をTSVとして吐き出すスクリプトを書いてみました。
やっぱりXPathだと簡潔にかけて大変よろしいです。
#!/usr/bin/perl
use CGI;
use LWP::Simple;
use XML::XPath;
use URI;
# Settings
my $aws_access_key_id = '(youraccesskey)';
my $debug = 0; # For debug
my $n = 1;
while( $n < 11){
my $uri = URI->new('http://webservices.amazon.co.jp/onca/xml');
my @param = [
Service => "AWSECommerceService",
AWSAccessKeyId => $aws_access_key_id,
Operation => "ItemSearch",
SearchIndex => "Books",
BrowseNode => "465610",
ResponseGroup => "Request,Large",
Version => "2007-01-15",
Sort => "salesrank",
ItemPage => $n,
];
$uri->query_form(@param);
my $response_string = get($uri);
# XPathオブジェクトを生成
my $xp = XML::XPath->new(xml=>$response_string);
# ItemをTSVにする
foreach my $item ( $xp->findnodes('//Items/Item') ) {
my $p = XML::XPath->new(context=>$item);
my @dat = ();
push(@dat, $p->findvalue('ASIN')); # ASIN
push(@dat, $p->findvalue('ItemAttributes/EAN')); # ISBN13
push(@dat, $p->findvalue('ItemAttributes/Title')); # タイトル
push(@dat, $p->findvalue('ItemAttributes/Author')); # 著者
push(@dat, $p->findvalue('ItemAttributes/ListPrice/Amount')); # 価格
print join("\t", @dat)."\n";
undef @dat;
}
$n++;
sleep(1);
}
久しぶりなので、限りなくダサい可能性が高いけど、まぁ動いたからよしとしておきます。そんなに時間を使ってもいられないし。。。。
うーん、これと同じものがphpにも標準になってくれないかなぁ。
† 参考
・404 Blog Not Found:perl - 勝手に添削 - isbn2asin
・PerlでXMLを扱う - スピリッツオブゼロ@blog
トラックバックについて
Trackback URL:
お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/2285
Trackbacks
このエントリにトラックバックはありません
Comments
愛のあるツッコミをお気軽にどうぞ。[policy]
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントはありません
Comments Form
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。
« EclipseでPerlを使う :: 信頼度成長曲線をExcelで書く »
サイト内検索
検索ワードランキング
へぇが多いエントリ
閲覧数が多いエントリ
1 . アーロンチェアのポスチャーフィットを修理(112142)
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(110786)
3 . 年次の人間ドックへ(110379)
4 . 2023 年分の確定申告完了!(1つめ)(109926)
5 . 三菱鉛筆がラミーを買収(109825)
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(110786)
3 . 年次の人間ドックへ(110379)
4 . 2023 年分の確定申告完了!(1つめ)(109926)
5 . 三菱鉛筆がラミーを買収(109825)
cles::blogについて
Referrers