amazon-ecs を使って Amazon から商品情報を取得するサンプル

公開日: : 最終更新日:2014/01/26 Ruby ,

次の仕事で使うことになるかもしれないので、どんなことができるのか調査したときに作成したスクリプト。

ResponseGroup は次の3つを指定。

  • ItemAttributes
  • SalesRank
  • OfferSummary

スクリプトはこんな感じ。Gist にも登録済み。

# encoding: utf-8
 
require 'amazon/ecs'
require 'yaml'
require 'nokogiri' 
 
class PaapiSample
  def initialize
    @config = YAML.load_file('./paapi-sample.yaml')
 
    Amazon::Ecs.options = {
      :associate_tag => @config['associate_tag'],
      :AWS_access_key_id => @config['AWS_access_key_id'],
      :AWS_secret_key => @config['AWS_secret_key']
    }
  end
 
  def get asin
    info = Hash::new
    res = Amazon::Ecs.item_lookup(asin, :response_group => "ItemAttributes, SalesRank, OfferSummary", :country => 'jp')
    res.items.each do |item|
      element = item.get_element('ItemAttributes');
      info[:asin] = asin
      info[:title] = element.get('Title')
      info[:amount] = element.get('ListPrice/Amount')
      info[:public_date] = element.get('PublicationDate')
      info[:url] = "http://www.amazon.co.jp/dp/#{asin}?tag=#{@config['associate_tag']}"
 
      element = item.get_element('SalesRank');
      Nokogiri::XML(element.to_s).xpath('/').each do |node|
        info[:sales_rank] = node.text
      end
      
      element = item.get_element('OfferSummary');
      info[:used_price] = element.get('LowestUsedPrice/Amount')
      info[:num_of_new] = element.get('TotalNew')
      info[:num_of_used] = element.get('TotalUsed')
    end
    return info 
  end 
      
end   
    
if __FILE__ == $0
  obj = PaapiSample.new
  asin = "4894712288"
  asin = ARGV[0] unless ARGV[0] == nil
  info = obj.get(asin)
  puts info
  puts info[:title]
  puts info[:url]
  puts info[:sales_rank]
  puts info[:amount]
  puts info[:num_of_new]
  puts info[:used_price]
  puts info[:num_of_used]
end
associate_tag: XXX
AWS_access_key_id: YYY
AWS_secret_key: ZZZ

SalesRank を取得する部分は Nokogiri を使った。商品名などのように element.get('SalesRank') としても取得できなかったので、このようにしている。書き方がマズかったのか。

API を使用するには Amazon でキーなどを発行してもらう必要がある。それらの項目はスクリプトに直接書くのではなく YAML に切り出している。

このスクリプトを実行すると、次の情報が取得できる。

  • 商品名
  • 商品詳細ページURL
  • ランキング
  • 価格
  • 出品個数
  • マーケットプレイスの最安値
  • マーケットプレイスの出品個数

Googleアドセンス用(PC)

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

関連記事

icatch_12845006573-resized

CentOSのバージョン6.5(64ビット)にamazon-ecsをインストールする

Amazon の Product Advertising API を使う作業があったので、Produ

記事を読む

no image

プログラミングの「面倒くせー」を減らす試み

プライベートで書くコードや、ちょっとしたスクリプトなんかは Ruby で書くようにしていますが、どう

記事を読む

icatch_4081722858-resized

CentOSにRubyのBundlerをインストールして使い始める人向けの簡単なまとめ

Bundler を使ってないと環境を移したときに面倒だってことが身に染みて分かったので Bundle

記事を読む

icatch_100612765-resized

CentOSのバージョン6.5(64ビット)にRuby2.1.2をインストールする

2014/08/10 時点での最新安定版である Ruby 2.1.2 をインストールしてみたので、そ

記事を読む

no image

配列の内容をファイルに書き込む

Ruby で書いたスクリプトを module 化していく試みの一貫です。 Array に保持してい

記事を読む

no image

amazon-ecs を使って Amazon から関連商品情報を取得するサンプル

次のサンプルスクリプトを書いたが、これに続くもの。 amazon-ecs を使って Amazon

記事を読む

no image

ファイルを読み込んでその内容を保持する

Ruby で書いたスクリプトを module 化していく試みの一貫です。 ファイルを読み込んで、そ

記事を読む

no image

with_index メソッド

with_index というメソッドを知ったのでメモ。どういうときに使うかのサンプルを載せておく。

記事を読む

no image

Redcarpet を使って Markdown をパースする

Ruby から Redcarpet を使って Markdown をパースしてみた。 せっかくなので

記事を読む

icatch_474695210-resized

amazon-ecsを使った検索のエラー原因を確認する

Amazon が提供しているサービス Product Advertising API を手軽に扱える

記事を読む

Googleアドセンス用(PC)

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


七 − 2 =

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Googleアドセンス用(PC)

icatch-jersey_multi_pathparams
Jerseyの@PathParamはスラッシュの間に複数指定できる

http://hoge-api/user/{id}.{format}

icatch-vagrant_box_customize
VagrantのBoxファイルをカスタマイズして独自のBoxファイルを作成する

配布されている Vagrant の Box ファイルを使って検証環境を

icatch-2015-006-1
バリデーションチェックにJava8のOptionalを使ってスマートに書く(自分比)

Web アプリのバリデーションチェックにアノテーションを使うことが増え

icatch-2015-005-1
ユニットテストの偏りを防ぐ命名規則の付け方

ユニットテスト名に以下の命名規則を付けるようにして二ヶ月ぐらい経った。

icatch-2015-004-1
Vagrantで起動したCentOS上のOctopressをホストOSから確認する設定

タイトルの通りだが、Vagrant を使って起動した CentOS に

→もっと見る

PAGE TOP ↑