スマートフォンやhtml5+CSS3など新技術に四苦八苦。jQuery、AjaxなどJavaScriptも難しいですね。そんなWebに悩む人のネタ帳です。

楽天WEB SERVICEで商品を検索するのに、検索条件は重要です。

楽天には大量の商品データがあり、楽天WEB SERVICEではその全ての商品が対象になります。おそらく、出店している側からすれば、アフェリエイターの検索にヒットして欲しいと願い、少なからずそれを目的に最適化の努力もしていると思われます。
逆に、アフェリエイターからすれば、検索条件をしっかり設定しないと、意図しない商品が検索結果としてアウトプットされてしまいます。

検索条件の中でも「ジャンルID」は重要です。
例えば「サッカーユニフォーム」を検索する場合、2通りの検索方法があります。
一つは、キーワードを「ユニフォーム」とした場合。そのままだと野球やバレーなど他のスポーツのユニフォームもヒットしてしまうので、ジャンルIDで「サッカー」を指定する必要があります。
もう一つの方法はキーワードに「サッカーユニフォーム」とした場合。これはキーワードのみである程度正しい結果を得られます。

ここで注目する点として、キーワードが長いほど検索結果は絞り込まれ、件数は少なくなるという事です。現時点での実際の検索結果を比較してみると以下のようになります。

検索条件 結果件数
ジャンルID「サッカー」
キーワード「ユニフォーム」
16,331件
キーワード「サッカーユニフォーム」 11,712件

要するに「サッカーユニフォーム」という長いキーワードを指定すれば、取りこぼしが発生するということですね。

さて、本題ですが、こうなるとジャンルIDの一覧があると助かるのですが、どうも楽天では公開されていないようです。楽天WEB SERVICEでプログラムすれば取得できるのですが、任意のジャンルIDに対して、その親と子しか取得できません。
例えば、サッカーをキーにジャンルIDを取得すると、親の「スポーツ・アウトドア」、子の「ウエア」「シューズ」「ボール」「アクセサリー(バッグ・グローブ)」「審判用品」「設備・備品」「サポーターグッズ」「その他」という結果しか得られません。つまり、ジャンル「シューズ」の下にもジャンルがあるのかないのか、あった場合に何がいくつあるのか、ということを反復的に調べなければ、全体を取得できません。

他のサイトで情報を収集したところ、どうも楽天カテゴリの情報は膨大で、それを抽出するスクリプトを作成したところで、実行し終えるのに数時間はかかるそうです。
そこまで大量のデータは不必要ですよね。

そこでどうにかならないものかと、調べていたのですが、どうやら楽天サイトのURLから同じジャンルIDが取得できるようです。例えばトップから遷移して、「サッカー」のジャンルに行った場合のURLは

http://search.rakuten.co.jp/search/mall/-/200169/?l-id=sprt_dir_4

ですが、この「200169」が「サッカー」のジャンルIDです。さらに子ジャンルの「シューズ」をクリックすると以下のURLに移動しますが、

http://search.rakuten.co.jp/search/mall/-/%E3%82%B7%E3%83%A5%E3%83%BC%E3%82%BA-201813/f.1-p.1-s.5-sf.0-st.A-v.2

「シューズ」のジャンルIDは「201813」になります。

これはこれでめんどくさいですが、目的達成のためには、スクリプトを実行するよりは時間を短縮できそうです。

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

Comment

Comment Form

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

Monthly Archives

Search