Shopee虾皮商品详情API接口调用实战:Python获取东南亚商品数据与JSON解析

在跨境电商数据开发中,Shopee(虾皮)商品详情API是常见的技术研究方向之一。

对于需要分析泰国、越南、马来西亚等市场商品信息的开发者来说,商品标题、价格、品牌、SKU规格和图片等数据,可以作为商品研究和数据系统开发的基础。

本文介绍一种通用的第三方商品数据API接入思路,演示如何使用Python发送HTTP请求、解析JSON返回结果,以及处理多站点商品数据。

需要说明的是,文中的第三方API地址和返回结构均为模拟示例,不是Shopee官方接口,也不代表任何服务商的实际接口定义。

一、Shopee商品详情API是什么?

商品详情API通常用于根据指定商品标识查询相关商品信息。

常见请求参数包括:

参数 说明
site 国家或市场站点
shop_id 店铺ID
item_id 商品ID
token 接口认证信息(如适用)

接口可能返回以下字段:

  • 商品ID、店铺ID

  • 商品标题及描述

  • 商品当前价格、原价

  • 商品品牌及分类

  • 商品图片

  • SKU规格及库存

  • 评分、销量等信息(视接口支持情况而定)

实际参数及字段需要根据接口文档确认。

二、Shopee不同站点如何区分?

Shopee覆盖多个东南亚市场,常见站点包括:

站点 国家 币种
TH 泰国 THB
VN 越南 VND
MY 马来西亚 MYR
PH 菲律宾 PHP
SG 新加坡 SGD
ID 印度尼西亚 IDR

不同站点的商品信息、价格及币种可能存在差异,进行跨市场分析时应分别处理。

三、使用Python请求Shopee商品详情API

1. 安装依赖

python 复制代码
pip install requests

2. 配置请求参数

以下使用假设的第三方HTTP API进行演示:

python 复制代码
import os
import requests

API_URL = "https://api.example.com/shopee/item/detail"
API_KEY = os.environ["SHOPEE_DATA_API_KEY"]

headers = {
    "Authorization": f"Bearer {API_KEY}",
    "Accept": "application/json"
}

params = {
    "site": "TH",
    "shop_id": "123456789",
    "item_id": "987654321"
}

response = requests.get(
    API_URL,
    headers=headers,
    params=params,
    timeout=30
)

response.raise_for_status()

result = response.json()

print(result)

在运行代码前,需要配置环境变量SHOPEE_DATA_API_KEY。

实际接口可能采用其他认证方式,例如API Key请求头或签名参数,不能直接套用本示例。

四、商品详情JSON返回数据示例

假设接口返回如下内容:

python 复制代码
{
  "code": 200,
  "message": "success",
  "data": {
    "site": "TH",
    "shop_id": "123456789",
    "item_id": "987654321",
    "title": "Wireless Bluetooth Earphones",
    "price": 399.00,
    "original_price": 499.00,
    "currency": "THB",
    "brand": "Example Brand",
    "images": [
      "https://example.com/image.jpg"
    ],
    "models": [
      {
        "name": "Black",
        "price": 399.00,
        "stock": 100
      }
    ]
  }
}

上述商品信息和数值均为模拟数据,仅用于说明字段结构。

五、Python解析商品详情字段

获得JSON数据后,可以使用字典操作提取所需字段。

python 复制代码
if result.get("code") == 200:
    item = result.get("data", {})

    print("商品ID:", item.get("item_id"))
    print("商品标题:", item.get("title"))
    print("商品价格:", item.get("price"))
    print("商品币种:", item.get("currency"))
    print("商品品牌:", item.get("brand"))

    for model in item.get("models", []):
        print("规格:", model.get("name"))
        print("规格价格:", model.get("price"))
else:
    print("接口返回异常:", result.get("message"))

需要注意,部分服务商可能将价格表示为整数最小货币单位、字符串或经过倍率处理的数值。

因此,不能仅凭字段名称假设价格单位,应根据实际接口文档进行转换。

六、封装一个可复用的API调用函数

在正式项目中,建议将请求逻辑封装成函数,方便处理不同国家站点的商品查询。

python 复制代码
import os
import requests

API_URL = "https://api.example.com/shopee/item/detail"

def get_shopee_item(site, shop_id, item_id):
    api_key = os.environ["SHOPEE_DATA_API_KEY"]

    headers = {
        "Authorization": f"Bearer {api_key}",
        "Accept": "application/json"
    }

    params = {
        "site": site,
        "shop_id": shop_id,
        "item_id": item_id
    }

    try:
        response = requests.get(
            API_URL,
            headers=headers,
            params=params,
            timeout=30
        )
        response.raise_for_status()

        result = response.json()

        if result.get("code") != 200:
            raise ValueError(
                f"接口业务错误: {result.get('message')}"
            )

        return result.get("data", {})

    except requests.Timeout:
        print("请求超时")
    except requests.RequestException as e:
        print("HTTP请求异常:", e)
    except ValueError as e:
        print("数据解析或业务异常:", e)

    return None


if __name__ == "__main__":
    item = get_shopee_item(
        site="MY",
        shop_id="123456789",
        item_id="987654321"
    )

    if item:
        print("商品标题:", item.get("title"))

通过函数封装,可以减少重复代码,也便于后续扩展日志记录、重试机制及数据存储功能。

七、如何处理多个Shopee站点的数据?

在多市场研究中,可以将查询任务整理为列表,再按任务分别调用接口。

python 复制代码
tasks = [
    {
        "site": "TH",
        "shop_id": "123456789",
        "item_id": "987654321"
    },
    {
        "site": "MY",
        "shop_id": "234567890",
        "item_id": "876543210"
    },
    {
        "site": "VN",
        "shop_id": "345678901",
        "item_id": "765432109"
    }
]

for task in tasks:
    item = get_shopee_item(**task)

    if item:
        print(
            task["site"],
            item.get("title"),
            item.get("price"),
            item.get("currency")
        )

这些ID同样属于模拟数据。

实际使用时,需要按照接口频率限制控制请求,并根据业务需求设计重试、缓存及去重逻辑。

不同国家站点的商品标识不能直接互换。

八、Shopee API开发中的常见问题

1. 返回商品为空怎么办?

建议检查商品ID、店铺ID及站点参数是否正确,同时确认接口是否支持目标商品及市场。

2. 接口返回401或403怎么办?

可能与认证信息、授权权限或接口访问规则有关,需要结合实际错误响应排查。

3. 商品价格为什么不一致?

可能涉及站点币种、促销活动、商品规格、更新时间或价格字段定义。

4. 是否可以批量获取商品详情?

取决于接口是否提供批量查询能力,以及相应调用限制。不能假设所有商品详情接口都支持批量请求。

5. 官方API与第三方API有什么区别?

Shopee官方开放平台接口通常要求相应的应用授权和身份认证,主要面向授权范围内的商家业务场景。

第三方商品数据API可能采用不同的接口设计,但具体访问范围、数据来源和使用权限仍需核实。

第三方Shopee数据API应用说明

对于跨境电商商品研究和系统开发,可以根据实际需求评估第三方商品数据API服务。

不同服务商在支持站点、数据字段、调用方式和更新机制等方面可能存在差异。

开发者在接入前,应先查看接口文档并完成测试,确认数据来源、授权范围及接口能力是否符合业务要求。

使用Python调用Shopee商品详情API,核心流程包括:

准备商品标识 → 配置接口认证 → 发送HTTP请求 → 解析JSON → 提取商品字段 → 数据存储与分析

对于跨境电商选品研究、多市场商品比较及数据系统开发,这种结构化的数据处理方式具有实际应用价值。

开发过程中,需要特别关注接口文档、币种及价格单位、异常处理、调用限制和数据合规要求。


免责声明: 本文仅用于API技术交流,文中请求地址、参数及JSON数据均为模拟示例,非Shopee官方接口。实际使用请遵守相关法律法规、数据授权要求及平台规则。

相关推荐
鸿业远图科技1 小时前
大连市_公交线
python
青春不朽5121 小时前
Python 里 a is b 有时 True 有时 False?小整数缓存和常量折叠的底层真相
python·spring·缓存
高洁011 小时前
数字孪生、具身智能、世界模型三者交叉
人工智能·python·深度学习·机器学习
niucloud-admin1 小时前
NIUCLOUD LITE AI开发文档--系统部署
开发语言·ai
多弗朗皮卡丘1 小时前
C++异常
开发语言·c++·异常
米糕闯编程1 小时前
鱼香ros2(十七)C++小海龟巡逻
开发语言·c++·机器人·ros2·服务·小海龟
郝学胜-神的一滴2 小时前
NumPy深度解析|Python数值计算的基石,告别低效for循环
开发语言·人工智能·python·程序人生·numpy·量化投资
死磕音视频2 小时前
让大模型稳定输出 JSON:结构化输出的三种方法与 Python 校验实践
json·大模型api·pydantic·结构化输出
\光辉岁月/2 小时前
15.JavaSE-网络
java·开发语言·网络