JavaScript勉強会

JavaScriptの学習日記

Amazonの商品カテゴリー情報 ブラウズノード検索

Amazonの商品データを取得する方法をメモ。

 

jsstudy.hatenablog.com

 

今回は、商品カテゴリーの情報をAPI経由で検索する方法です。

 

BrowseNodeIdで検索

Amazonの用語で、商品カテゴリーのことを「ブラウズノード」と言います。

各ブラウズノードには「ブラウズノードID」という背番号が割り当てられています。

 

(参考)用語 ブラウズノード(Browse Node)

jsstudy.hatenablog.com

 

例えば、本の中の「JavaScript」というノードなら、「3232386051」というノードIDが割り当てられていました。

https://www.amazon.co.jp/b/?node=3232386051

本 : コンピュータ・IT : Web作成・開発 : Webプログラミング : JavaScript

 

それでは、早速ノードIDでカテゴリー情報を取得してみましょう。

以前に用意したProduct Advertising APIを利用するライブラリーを使います。

 

jsstudy.hatenablog.com

 

ここでは、CodeIgniter(PHPMVCフレームワーク)で利用する方法をメモしときます。

CodeIgniterのモデルで「Search」クラスを作成、検索用に「search_browsenodeid」メソッドを作成します。

 

<?php
defined('BASEPATH') or exit('No direct script access allowed');

class Search_model extends CI_Model
{
    public function __construct()
    {
        parent::__construct();
        $this->load->library('amazon');
    }

    // BrowseNodeId 検索
    public function search_browsenodeid($browsenodeid = '')
    {
        $params['Operation'] = 'BrowseNodeLookup';
        $params['ResponseGroup'] = 'BrowseNodeInfo';
        $params['BrowseNodeId'] = $browsenodeid;
        $url = $this->amazon->encodeURL($params);
        $xml = file_get_contents($url); // API response
        return $this->amazon->xml2array($xml); // XML -> 配列
    }
}

 

Amazon APIへのリクエストで、

  • Operation に BrowseNodeLookup
  • ResponseGroup に BrowseNodeInfo
  • BrowseNodeId に 検索したいブラウズノードID

を指定しています。

これで、ブラウズノードに関する情報が取得できます。

 

サンプル

以下に、本のカテゴリーを検索した結果を例示します。

 

f:id:jsstudy:20180926213049p:plain

 

f:id:jsstudy:20180926213108p:plain

 

f:id:jsstudy:20180926213126p:plain

 

Amazon APIのレスポンス(返答)の中に「BrowseNodes」という項目があります。

その中の「BrowseNode」にブラウズノードに関する情報が格納されてました。

 

  • BrowseNodeId … ノードID (カテゴリー番号)
  • Name … ノード名(カテゴリー名)
  • Children … ノードの下にある子ノード
  • Ancestors … ノードの上にある親ノード(祖先ノード)

 

英語のAncestorは「祖先」という意味でした。

ChildrenとAncestorsのデータをうまく利用すれば、ノードの階層構造を調べることができます。

Ancestorsは、再帰的な構造のデータになっているので、再帰的な処理を行なえば、人間にとって見やすい形のデータに加工できます。

 

(次回は、再帰的な処理と、データベースに保存する方法をまとめたいと思います。)

 

 

スラスラわかるPHP

スラスラわかるPHP