はじめに
前回、楽天APIでBOOKOFFの価格を取得する方法を試してみました。前回の方法は、
「キーワードとshopCodeから商品リストを取得する」
というものでした。さらにAmazonの値段と比較したいとなると、タイトルをキーワードに与えて検索するだけではAmazonの商品と違うものがヒットする可能性があります。それでJANコードも指定してBOOKOFF価格を取得できないか試してみました。環境やAPIは前回と同じです。
以下、ゲームソフトの場合を試しています。
開発・実行環境
MacBook ProOSX El Capitan (10.11.3)
ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-darwin15]
使用したAPI
楽天商品検索API (version:2014-02-22)BOOKOFF取り扱い商品のJANコード
APIリファレンスを見てもJANコードを指定するようなパラメータは見当たりません。適当にゲームソフトを検索してみるとJANコードは下の画像のように表示されているので情報はあるようです。
そこで、
RakutenWebService::Ichiba::Item.searchの結果を見てみました。itemCaptionの項目が商品説明文なのですが、その中に含まれていました。例えば上のソフトの検索結果のitemCaptionは次のようになっています。
「ニンテンドーDS販売会社/発売会社:スクウェア・エニックス発売年月日:2010/03/04JAN:4988601006392機種:ニンテンドーDS国民的RPG「ドラゴンクエスト」シリーズ9作品目。物語の舞台は「天使界」。世界樹に女神の果実が実るとき、神の国への道が開かれる!それは天使界に伝わる言い伝え。しかし、ある日、恐ろしい事件が発生して・・・!?壮大な世界を冒険するという本来の魅力に加え、キャラクターカスタマイズや転職でき、多彩なキャラクター作りが楽しめます。さらにワイヤレス通信でのマルチプレイ、さまざまなサブストーリーを体験できる「クエスト」など新要素満載の充実した内容となっています。」
思いっきり説明文中にJANと含まれていますね。というわけで、JANコードからBOOKOFF価格を強引に取得する方法として、
- タイトルをキーワードにして検索し、商品リストを取得
- 商品リストを片っ端から調べ、itemCaption中にJANコードが含まれていたら該当商品とみなし価格を取得
を試したコードが下のもの。前回のコードに、
if caption.include? (jan_code)
の行が追加されています。
require 'rakuten_web_service'require 'uri' # 楽天のサンプルに追加 RakutenWebService.configuration do |c| c.application_id = 'YOUR_APPLICATION_ID' # 取得したアプリケーションIDで置き換える c.affiliate_id = 'YOUR_AFFILIATE_ID' # この行はなくても大丈夫そう。 end jan_code = '4988601006392'items = RakutenWebService::Ichiba::Item.search(:keyword => 'ドラゴンクエストIX', :shopCode => 'bookoffonline') items.each do |item| if item['availability'] == 1 #在庫があるか caption = item['itemCaption'] if caption.include? (jan_code) # 説明文にjan_codeが含まれているか p item.price.to_i end end end
おわりに
普通にJANコードをキーに検索できても良さそうですし、もしかしたら方法があるのかもしれません。見つかったらまた更新します。
検索からたどり着きました。 JANコードから商品情報を得たいんですが、なかなか難しそうでしょうか?
返信削除