PR

【Python実践】楽天商品APIでジャンル情報を取得・活用する方法

【Python実践】楽天商品APIでジャンル情報を取得・活用する方法

📌 概要

楽天商品APIを使って商品ジャンルの階層構造を取得し、CSV形式で保存するPythonスクリプトを解説します。親ジャンル、現在のジャンル、子ジャンルの関係性を明確に把握でき、ECサイトの商品カテゴリ分析やデータ分析に活用できます。

🔰 前提知識

  • Python基礎文法
  • API・JSONの基本的な理解
  • CSVファイル操作の基礎

🛠️ 必要な環境

  • Python 3.7以上
  • 必要なライブラリ:
  • requests
  • python-dotenv
  • 楽天アプリケーションID

💡 主な機能と特徴

1. APIリクエスト機能

def make_api_request(genre_id: int) -> Dict[str, Any]:
    params = {
        'applicationId': RAKUTEN_APP_ID,
        'genreId': genre_id,
        'genrePath': 1,  # 親ジャンル情報取得用
        'formatVersion': 2
    }
  • エラーハンドリング機能搭載
  • リトライ機能による安定性確保
  • タイムアウト設定による処理の安全性確保

2. ジャンルデータ処理機能

def process_genre_data(data: Dict[str, Any]) -> List[Dict[str, Any]]:
    genres = []
    # 親ジャンル処理
    if 'parents' in data:
        for parent in data['parents']:
            genre_info = {
                'genre_id': parent['genreId'],
                'genre_name': parent['genreName'],
                'genre_level': parent['genreLevel'],
                'relation': 'parent'
            }
            genres.append(genre_info)

取得できる情報:

  • 親ジャンル情報(上位カテゴリ)
  • 現在のジャンル情報
  • 子ジャンル情報(下位カテゴリ)
  • ジャンル階層レベル

3. CSV出力機能

def save_to_csv(genres: List[Dict[str, Any]], filepath: str) -> None:
    fieldnames = ['genre_id', 'genre_name', 'genre_level', 'relation']

出力データの形式:

genre_id,genre_name,genre_level,relation
111111,レディースファッション,1,parent
222222,トップス,2,current
333333,Tシャツ,3,child

🎯 実践的な活用例

1. ECサイトのカテゴリ設計

  • 商品カテゴリの階層構造分析
  • 競合サイトのカテゴリ構成研究
  • 自社ECサイトのカテゴリ設計参考

2. マーケティング分析

  • カテゴリごとの商品数分析
  • 階層の深さと商品数の相関分析
  • カテゴリ構成のトレンド分析

3. データ分析・機械学習

  • 商品カテゴリの自動分類
  • レコメンデーションシステムの構築
  • 類似商品の抽出

📈 拡張アイデア

1. データ収集の拡張

# 再帰的に全階層を取得する例
def fetch_all_genres(genre_id: int, max_level: int = 3):
    data = make_api_request(genre_id)
    genres = process_genre_data(data)

    if 'children' in data and max_level > 0:
        for child in data['children']:
            child_genres = fetch_all_genres(
                child['genreId'], 
                max_level - 1
            )
            genres.extend(child_genres)

    return genres

2. データ分析機能の追加

# ジャンル階層の統計分析例
def analyze_genre_structure(genres: List[Dict[str, Any]]):
    stats = {
        'total_genres': len(genres),
        'max_level': max(g['genre_level'] for g in genres),
        'genres_per_level': {}
    }
    return stats

🔒 エラーハンドリングとセキュリティ

1. カスタム例外処理

class RakutenAPIError(Exception):
    """楽天API関連のエラーを処理するカスタム例外クラス"""

2. 環境変数による認証情報管理

# .env
RAKUTEN_APP_ID=your_app_id_here

📝 まとめ

このスクリプトを活用することで以下を自動化

  1. 楽天の商品カテゴリ構造を体系的に取得
  2. 階層関係を明確に把握
  3. データ分析や機械学習に活用可能なデータ形式で保存が実現できます。

🔧 今後の展望

  1. WebUIの追加によるデータ可視化
  2. 定期実行による変更検知機能
  3. 他のECプラットフォームとの連携
  4. リアルタイムデータ更新機能

👉 参考資料

このスクリプトは、ECサイトの運営やデータ分析に携わるエンジニアにとって、有用なツールとなることでしょう。

コメント

タイトルとURLをコピーしました