Python调用Rakuten商品详情API完整案例

一、核心准备步骤
  1. 获取API凭证注册账号并创建应用,获取Client ID(应用标识)和Client Secret(密钥)。需在"API目录"中申请Rakuten Ichiba API权限。

  2. 安装依赖库
    推荐使用官方Python SDK rakuten-ws(支持商品搜索、订单管理等),或直接使用requests库:

pip install requests rakuten-ws
二、请求构造与响应处理示例
方案1:使用requests库直接调用(推荐)
import requests

def get_product_details():
    # 1. 构造请求参数
    base_url = "https://app.rakuten.co.jp/services/api/IchibaItem/Search/20170706"
    params = {
        "applicationId": "YOUR_CLIENT_ID",  # 替换为实际Client ID
        "keyword": "ワイヤレスイヤホン",    # 日语关键词需URL编码
        "hits": 10,                        # 返回10条结果
        "format": "json"
    }

    # 2. 发送GET请求
    response = requests.get(base_url, params=params)

    # 3. 处理响应
    if response.status_code == 200:
        result = response.json()
        items = result.get("Items", [])
        
        # 提取商品详情
        for item in items:
            item_info = item.get("Item", {})
            print(f"商品名称: {item_info.get('itemName')}")
            print(f"价格: {item_info.get('itemPrice')}日元")
            print(f"店铺: {item_info.get('shopName')}\n")
    else:
        print(f"调用失败,状态码: {response.status_code}, 错误信息: {response.text}")

# 执行调用
get_product_details()
方案2:使用rakuten-ws库(更简洁)
from rakuten_ws import IchibaItem

def get_product_details_sdk():
    # 初始化客户端
    ichiba = IchibaItem(application_id="YOUR_CLIENT_ID")
    
    # 构造请求
    response = ichiba.search(
        keyword="ワイヤレスイヤホン",
        hits=10,
        sort="+itemPrice"  # 按价格升序排序
    )
    
    # 处理响应
    if response.status_code == 200:
        items = response.json().get("Items", [])
        for item in items:
            item_info = item.get("Item", {})
            print(f"商品ID: {item_info.get('itemCode')}")
            print(f"名称: {item_info.get('itemName')}")
            print(f"价格: {item_info.get('itemPrice')}日元\n")
    else:
        print(f"错误: {response.text}")

# 执行调用
get_product_details_sdk()
三、关键参数说明
参数名 必选 说明 示例值
applicationId 开发者应用ID "1234567890abcdef"
keyword 搜索关键词(需URL编码) "ワイヤレスイヤホン"
hits 返回结果数量(1-100) 10
sort 排序方式(+price升序) "+itemPrice"
四、错误处理与最佳实践
  1. 认证错误处理

    • 401/403错误:检查Client ID是否正确,应用是否通过审核
    • 400错误:检查必选参数是否遗漏,参数格式是否正确(如hits需为数字)
  2. 数据解析技巧
    使用.get()方法避免KeyError,例如:

    item_price = item_info.get("itemPrice", "N/A")  # 默认值N/A
  3. 性能优化

    • 使用分页参数pagepageCount控制返回数据量
    • 添加超时参数避免阻塞:
      response = requests.get(url, timeout=5)  # 5秒超时
五、扩展功能示例

获取单个商品详情(需商品ID):

def get_single_product():
    url = "https://app.rakuten.co.jp/services/api/IchibaItem/20170706"
    params = {
        "applicationId": "YOUR_CLIENT_ID",
        "itemCode": "target_item_id"  # 替换为实际商品ID
    }
    response = requests.get(url, params=params)
    # 后续处理逻辑同上...

使用OAuth认证(适用于需要用户授权的API):

from requests_oauthlib import OAuth2Session

client = OAuth2Session(client_id="YOUR_CLIENT_ID")
authorization_url = client.authorization_url("https://api.rakuten.net/oauth2/authorize")
# 引导用户访问authorization_url完成授权
token = client.fetch_token("https://api.rakuten.net/oauth2/token", ...)
六、注意事项
  1. 日语关键词需进行URL编码(如"ワイヤレスイヤホン" → "%E3%83%8F%E3%82%A4%E3%83%A4%E3%83%AB%E3%82%B9%E3%82%A4%E3%83%A4%E3%83%9B%E3%83%B3")
  2. 响应数据中的价格单位为日元,需注意汇率转换
  3. 部分API有调用频率限制(如100次/分钟),需合理设计请求间隔

通过以上方案,可实现从请求构造到响应处理的全流程自动化。实际开发中建议结合具体业务需求,添加日志记录、异常重试、数据缓存等增强功能。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐