当前位置: 首页 > news >正文

批量获取亚马逊商品SKU商品规格调用流程

批量获取亚马逊商品SKU及商品规格的调用流程主要涉及 注册开发者账号、获取API权限、构建批量请求、处理响应数据 四个核心步骤,以下是详细说明:

一、注册与认证

  1. 注册亚马逊开发者账号
    • 访问 亚马逊开发者中心,使用企业邮箱注册账号(个人账号可能权限受限)。
    • 创建 安全配置文件(Security Profile),获取 Client ID 和 Client Secret,用于后续OAuth 2.0认证。
  2. 申请API访问权限
    • 根据需求选择API类型:
      • Product Advertising API(PA-API):适合获取商品详情、搜索列表,需提交使用场景说明(如竞品监控、价格追踪)。
      • Selling Partner API(SP-API):适合卖家操作(如库存管理、订单处理),需提供卖家账号信息。
    • 提交申请后,亚马逊会审核并分配 Access Key ID 和 Secret Access Key(用于签名请求)。
  3. 获取OAuth 2.0令牌
    • 使用 Client IDClient Secret 和 Refresh Token(通过授权流程获取)定期刷新 Access Token(有效期24小时)。
    • 示例请求(Python):

      python

      import requests
      def refresh_access_token(client_id, client_secret, refresh_token):
      url = "https://api.amazon.com/auth/o2/token"
      data = {
      "grant_type": "refresh_token",
      "refresh_token": refresh_token,
      "client_id": client_id,
      "client_secret": client_secret
      }
      response = requests.post(url, data=data)
      return response.json()["access_token"]

二、构建批量请求

  1. 选择批量查询接口
    • PA-API:使用 ListCatalogItems 接口,通过 MarketplaceId(如美国站 ATVPDKIKX0DER)和 Query(关键词或ASIN列表)批量获取商品。
    • SP-API:使用 /products/v0/listings/{sellerId} 接口,通过卖家ID和ASIN列表获取商品规格。
  2. 设置请求参数
    • 必需参数
      • MarketplaceId:目标站点ID。
      • Query:ASIN列表(如 ["B000012345", "B000067890"])。
      • MaxResultsPerPage:每页最多返回1000条数据。
    • 可选参数
      • IncludedData:指定返回字段(如 images,price,description,attributes)。
      • SortBy:按价格、评分等排序。
  3. 生成签名(PA-API示例)
    • PA-API需对请求参数进行签名,确保安全性:

      python

      import hmac
      import hashlib
      import base64
      from datetime import datetime
      def generate_signature(params, secret_key):
      sorted_params = sorted(params.items())
      query_string = "&".join([f"{k}={v}" for k, v in sorted_params])
      signature = hmac.new(
      secret_key.encode(),
      query_string.encode(),
      hashlib.sha256
      ).digest()
      return base64.b64encode(signature).decode()
      params = {
      "Service": "AWSECommerceService",
      "Operation": "ListCatalogItems",
      "MarketplaceId": "ATVPDKIKX0DER",
      "Query": "B000012345,B000067890",
      "AWSAccessKeyId": "YOUR_ACCESS_KEY",
      "Timestamp": datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%SZ")
      }
      params["Signature"] = generate_signature(params, "YOUR_SECRET_KEY")

三、发送请求与处理响应

  1. 发送HTTP请求
    • 使用GET或POST方式发送请求到亚马逊API服务器:

      python

      import requests
      def batch_get_products(asins, marketplace_id, access_token):
      url = "https://api.amazon.com/products/v0/listings"
      headers = {
      "Authorization": f"Bearer {access_token}",
      "x-amz-access-token": access_token
      }
      params = {
      "MarketplaceId": marketplace_id,
      "Query": ",".join(asins),
      "IncludedData": "images,price,attributes"
      }
      response = requests.get(url, headers=headers, params=params)
      return response.json()
  2. 解析响应数据
    • 响应通常为JSON格式,包含商品SKU、标题、价格、库存、规格等字段:

      json

      {
      "Items": [
      {
      "ASIN": "B000012345",
      "Title": "Example Product",
      "Price": {
      "Amount": 199.99,
      "CurrencyCode": "USD"
      },
      "Attributes": {
      "Color": "Black",
      "Size": "XL",
      "Material": "Cotton"
      },
      "Images": [
      {
      "URL": "https://m.media-amazon.com/images/I/51Zymoq7UnL.jpg",
      "Height": 500,
      "Width": 500
      }
      ]
      }
      ]
      }
  3. 错误处理与重试
    • 检查响应状态码:
      • 200:成功,解析数据。
      • 403:权限不足,检查API密钥或令牌。
      • 429:频率超限,实现指数退避重试(如等待5秒后重试)。

四、优化与扩展

  1. 分页处理
    • 若商品数量超过单页限制(如1000条),需循环请求下一页:

      python

      def batch_get_all_products(asins, marketplace_id, access_token):
      all_data = []
      page_size = 1000
      for i in range(0, len(asins), page_size):
      page_asins = asins[i:i + page_size]
      response = batch_get_products(page_asins, marketplace_id, access_token)
      all_data.extend(response["Items"])
      return all_data
  2. 数据存储与更新
    • 将获取的数据存储到数据库(如MySQL、MongoDB)或CSV文件,便于后续分析:

      python

      import csv
      def save_to_csv(data, filename="products.csv"):
      with open(filename, "w", newline="", encoding="utf-8") as f:
      writer = csv.writer(f)
      writer.writerow(["ASIN", "Title", "Price", "Color", "Size"])
      for item in data:
      writer.writerow([
      item["ASIN"],
      item["Title"],
      item["Price"]["Amount"],
      item["Attributes"].get("Color", ""),
      item["Attributes"].get("Size", "")
      ])
  3. 结合第三方服务
    • 若亚马逊API限制较多,可考虑使用第三方服务(如Pangolin Scrape API)简化开发,但需注意合规性。
http://www.dtcms.com/a/320251.html

相关文章:

  • 【实时Linux实战系列】基于实时Linux的高频交易系统构建
  • Python 常用内置高阶函数
  • RabbitMQ面试精讲 Day 15:RabbitMQ故障转移与数据恢复
  • C++ min循环超超超详细指南
  • WFP DNS 域名解析
  • 深入理解C++模板进阶:非类型参数、特化与分离编译
  • Linux节点创建API与路径对应关系
  • AI日报0807 | GPT-5或今晚1点来袭:四大版本全曝光
  • 什么是 TDengine IDMP?
  • Disruptor 消费者核心:BatchEventProcessor解析
  • 告别复杂配置!cpolar让Prometheus监控突破网络限制
  • 【42】【OpenCV C++】 计算图像某一列像素方差 或 某一行像素的方差;
  • 嵌入式开发硬件——单片机
  • 【列出指定时间段内所有的下单产品】
  • 数据结构(循环顺序队列)
  • RAGAS:检索增强生成系统的无参考评估框架与技术解析
  • 2025年华数杯C题超详细解题思路
  • 哈希表原理与实现全解析
  • 天道20金句
  • Moses工具的配置和小语种平行语料训练SMT完整实现
  • 大模型 Transformer模型(上)
  • Java集合的遍历方式(全解析)
  • 力扣经典算法篇-46-阶乘后的零(正向步长遍历,逆向步长遍历)
  • BGP笔记整理
  • Maven高级:继承与聚合实战指南
  • RS485转Profibus网关在QDNA钠离子分析仪与300PLC通信中的应用解析
  • 【OCCT+ImGUI系列】013-碰撞检测-包围盒Bnd_Box
  • 【入门级-C++程序设计:9、函数与递归-函数定义与调用、形参与实参】
  • RESTful 服务概述:从理念到实践的全面解析
  • Coze开放平台综合文档指南