« 「OpenLaszlo 4 Beta 1」 リリース | メイン | 「Gruff」 with Rubyでスタイリッシュなグラフを描こう »

Amazon E-Commerce Service(ECS) Ruby編

  はてなブックマークに追加 このエントリを livedoor クリップへ追加

Amazonの「ECS」にアクセスするコードをRubyで書いてみました。


ECSにアクセスするために、RESTプロトコルを利用しました。RESTを利用する方法の詳細については、「Amazon E-Commerce Service(ECS) 第1回」を参照してください。


早速ですが、コードを示します。

-------------------------------------------- ここから
require 'net/http'
require 'cgi'
require 'rexml/document'


# ECSを利用するために必要な情報を設定します

AWS_BASE_URL = "http://webservices.amazon.co.jp/onca/xml?"
AWS_ACCESS_KEY_ID = "アクセスキーを指定します"
SERVICE_NAME = "AWSECommerceService"
SERVICE_VERSION = "2006-11-14"
ASSOCIATE_TAG = "アソシエイトIDを指定します(省略可)"


# 商品を検索するために必要なキーワードを指定します

responseGroup = "ItemAttributes"
operation = "ItemSearch"
keywords = "Java"
searchIndex ="Books"


parameters = {
  :Service => SERVICE_NAME,
  :Version => SERVICE_VERSION,
  :AWSAccessKeyId => AWS_ACCESS_KEY_ID,
  :AssociateTag => ASSOCIATE_TAG,
  :Operation => operation,
  :ResponseGroup => responseGroup,
  :Keywords => keywords,
  :SearchIndex => searchIndex
}


# RESTで必要なパラメータをURL形式に変更します

paramString = (
  parameters.collect { |key,value| "#{key}=#{CGI::escape(value)}" }
).join('&')


# RESTでアクセスするためのURLを作成します

url = URI.parse( AWS_BASE_URL + paramString )


# ECSからXMLのデータを取得します

xml = REXML::Document.new( Net::HTTP.get( url ) )


# 必要なデータまでのXPathを指定します
# (今回は書籍のタイトルの抽出しています)

xpath = "ItemSearchResponse/Items/Item/ItemAttributes/Title"


# 取得したXMLから、必要な情報を取り出して、出力します

xml.elements.each( xpath ) { |element|
  puts element.text
}
-------------------------------------------- ここまで


つづいて、出力例を示します。

  やさしいJava 第3版
  Java並行処理プログラミング ―その「基盤」と「最新API」を究める―
  ソースコードリーディングから学ぶ Javaの設計と実装
  Apache Maven 2.0入門 Java・オープンソース・ビルドツール
  増補改訂版Java言語で学ぶデザインパターン入門
  Java World (ジャバ・ワールド) 2007年 02月号 [雑誌]
  Spring2.0入門 Java・オープンソース・Web開発自由自在
  増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編
  Eclipse 3.2 完全攻略
  Effective Java プログラミング言語ガイド


以上です。


Rubyを利用したためでしょうか、非常にお手軽感な感じがします。

ちょっとしたスクリプトを書いて「インターネットというデータベースから、データを抽出している」ような感じです。


(参考)
  「Ruby で Amazon Web Service(AWS) メモ
  「Getting Started Sample for Amazon Mechanical Turk in Ruby (REST)

(関連)
  「REXMLについて





Ads BOARD








最近のエントリーとその関連エントリー

トラックバック

このエントリーのトラックバックURL:
http://kazuhiro.ty.land.to/blog/mt-tb.cgi/118

  Map