亚马逊平台根据关键字搜索商品API接口

电子说

1.4w人已加入

描述

 在电商开发中,集成亚马逊平台的商品搜索功能是常见需求。通过亚马逊的Product Advertising API(PAAPI),开发者可以根据关键字高效检索商品信息。本技术帖将逐步介绍如何调用此API,包括获取权限、发送请求、解析响应及注意事项。所有内容基于官方文档,确保真实可靠。

1. API简介与用途

亚马逊的Product Advertising API(PAAPI)是一个RESTful接口,允许开发者通过关键字搜索商品。主要功能包括:

根据关键词返回相关商品列表。

获取商品详情,如标题、价格、图片等。

支持分页和过滤,提升搜索精准度。 此API适用于构建比价工具、商品推荐系统或市场分析应用。例如,输入关键词“蓝牙耳机”,API返回匹配商品的数据。

2. 获取API访问权限

在使用API前,需完成注册和认证:

步骤1:注册为Amazon Associate
访问Amazon Associates官网,创建账户并同意条款。审核通过后,获得“Partner Tag”(关联ID)。

步骤2:申请API密钥
在Amazon Advertising控制台中,生成“Access Key”和“Secret Key”。这些密钥用于请求签名,确保安全。

步骤3:了解限制
PAAPI有免费额度(每月请求限制),超出需付费。严格遵守亚马逊政策,避免滥用。

3. API接口详解

搜索商品的核心端点是SearchItems,使用HTTP GET方法。主要参数如下:

必需参数

Keywords:搜索关键字,例如“手机”。

PartnerTag:您的Amazon Associate ID。

AccessKey:API访问密钥。

SecretKey:用于生成签名的密钥(不在请求中直接发送)。

可选参数

ItemPage:分页页码(默认1)。

SearchIndex:搜索类别(如“Electronics”)。

请求格式
请求需包括签名头(Authorization Header),签名算法基于HMAC-SHA256。公式为:
$$ text{签名} = text{HMAC}(text{SecretKey}, text{规范化字符串}) $$
其中规范化字符串包含时间戳、请求方法等。

响应格式
响应为JSON,结构包括:

SearchResult:包含商品列表的数组。

每个商品有ASIN(唯一ID)、Title、Price等字段。

错误时返回错误码,如“InvalidParameter”。

4. 示例调用代码

以下Python代码演示如何调用API。使用requests和urllib库处理签名。确保安装依赖:pip install requests。

 

import requests
import urllib.parse
import hmac
import hashlib
import datetime

# 配置参数(替换为您的实际值)
access_key = "YOUR_ACCESS_KEY"
secret_key = "YOUR_SECRET_KEY"
partner_tag = "YOUR_PARTNER_TAG"
keywords = "蓝牙耳机"  # 搜索关键字

# 生成签名和请求URL
def generate_request_url():
    # 基础URL和参数
    base_url = "https://webservices.amazon.com/paapi5/searchitems"
    params = {
        "Keywords": keywords,
        "PartnerTag": partner_tag,
        "AccessKey": access_key,
        "Timestamp": datetime.datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%SZ")
    }
    # 规范化参数并生成签名
    sorted_params = sorted(params.items())
    query_string = urllib.parse.urlencode(sorted_params)
    string_to_sign = f"GETnwebservices.amazon.comn/paapi5/searchitemsn{query_string}"
    signature = hmac.new(secret_key.encode(), string_to_sign.encode(), hashlib.sha256).digest()
    signature_encoded = urllib.parse.quote(base64.b64encode(signature))
    
    # 添加签名到URL
    full_url = f"{base_url}?{query_string}&Signature={signature_encoded}"
    return full_url

# 发送请求并处理响应
try:
    url = generate_request_url()
    headers = {"Accept": "application/json"}
    response = requests.get(url, headers=headers)
    
    if response.status_code == 200:
        data = response.json()
        # 解析商品列表
        for item in data.get("SearchResult", {}).get("Items", []):
            title = item.get("ItemInfo", {}).get("Title", {}).get("DisplayValue", "N/A")
            price = item.get("Offers", {}).get("Listings", [{}])[0].get("Price", {}).get("DisplayAmount", "N/A")
            print(f"商品: {title}, 价格: {price}")
    else:
        print(f"请求失败: 状态码 {response.status_code}, 错误: {response.text}")
except Exception as e:
    print(f"发生异常: {str(e)}")
API接口

 

5. 解析响应数据

API响应是JSON对象,关键字段包括:

SearchResult.Items[]:商品数组。

每个商品有:

ASIN:商品唯一标识。

DetailPageURL:商品详情页链接。

ItemInfo.Title.DisplayValue:商品标题。

Offers.Listings[0].Price.DisplayAmount:价格。 解析时,检查错误字段如Errors,处理常见错误如“InvalidAccessKey”。

6. 注意事项

速率限制:免费层限1000请求/天,超出需升级。监控使用量,避免封禁。

签名安全:SecretKey必须保密,不在客户端存储。使用环境变量管理密钥。

政策遵守:仅用于合法用途,不得抓取禁止数据。亚马逊可能更新API版本,需关注文档。

错误处理:添加重试逻辑,应对网络问题。使用指数退避算法:
$$ text{等待时间} = text{基础间隔} times 2^{text{尝试次数}} $$

性能优化:缓存频繁搜索结果,减少API调用。

7. 总结

通过PAAPI,开发者能高效集成亚马逊商品搜索功能。本指南覆盖了从注册到代码实现的完整流程。建议先测试沙箱环境,再部署生产。更多细节参考官方文档。如有疑问,欢迎在评论区讨论!

​审核编辑 黄宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分