一、API接入准备
1. 注册亚马逊开发者账号
- 访问地址:亚马逊开放平台/万邦开放平台
- 步骤: 创建企业账号(需企业邮箱)。 创建安全配置文件(Security Profile),获取Client ID和Client Secret。 提交API使用申请,说明用途(如竞品监控、价格追踪等)。
2. 获取API密钥
- 关键凭证: Access Key ID和Secret Key(用于签名请求)。 OAuth2.0的Refresh Token(用于获取访问令牌)。
3. 选择API类型
- 推荐接口: Product Advertising API(官方接口,需审批)。 SP-API(Selling Partner API) (适用于卖家操作)。 第三方服务(如Pangolin Scrape API,简化开发)。
二、核心API调用流程
1. 单个商品信息查询(ItemLookup)
请求示例(Python) :
python
import requests
import hmac
import hashlib
from datetime import datetime
def get_product_details(asin, access_key, secret_key):
endpoint = "webservices.amazon.com"
params = {
"Service": "AWSECommerceService",
"Operation": "ItemLookup",
"ResponseGroup": "ItemAttributes,Offers,Images",
"IdType": "ASIN",
"ItemId": asin,
"AWSAccessKeyId": access_key,
"Timestamp": datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%SZ")
}
# 生成签名
sorted_params = sorted(params.items())
query = "&".join([f"{k}={v}" for k, v in sorted_params])
signature = hmac.new(
secret_key.encode(),
query.encode(),
hashlib.sha256
).hexdigest()
url = f"https://{endpoint}/onca/xml?{query}&Signature={signature}"
response = requests.get(url)
return response.json()
2. 批量商品信息查询(ListCatalogItems)
请求参数:
MarketplaceId
:目标站点(如ATVPDKIKX0DER
表示美国站)。Query
:关键词或ASIN列表。MaxResultsPerPage
:每页最多1000条。
分页处理示例:
python
def batch_get_products(asins, marketplace_id):
results = []
for asin in asins:
data = get_product_details(asin, access_key, secret_key)
results.append(data)
return results
三、数据处理与存储
1. 解析API响应
示例解析函数:
python
def parse_response(response):
try:
item = response["ItemLookupResponse"]["Items"]["Item"]
return {
"title": item["ItemAttributes"]["Title"],
"price": item["Offers"]["Offer"]["ListingPrice"]["Amount"],
"image": item["LargeImage"]["URL"],
"rating": item["CustomerReviews"]["AverageRating"]
}
except KeyError:
return None
2. 数据存储(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", "Rating"])
for item in data:
writer.writerow([item["ASIN"], item["title"], item["price"], item["rating"]])
四、高级功能与注意事项
1. 频率限制与缓存
- 限制:默认每秒1次请求,可通过申请提升配额。
- 缓存策略:使用Redis或本地缓存高频访问数据,减少API调用。
2. 错误处理
python
if response.status_code == 429:
retry_after = int(response.headers.get("Retry-After", 5))
time.sleep(retry_after)
continue
elif response.status_code == 403:
raise Exception("API密钥无效或权限不足")
3. 第三方服务对比
服务 | 优点 | 适用场景 |
---|---|---|
Product Advertising API | 官方接口,数据权威 | 精准竞品分析 |
Pangolin Scrape API | 无需审批,支持异步回调 | 快速搭建监控系统 |
五、完整代码示例(Python)
python
# 配置参数
ACCESS_KEY = "YOUR_ACCESS_KEY"
SECRET_KEY = "YOUR_SECRET_KEY"
ASINS = ["B07DTH3N2X", "B08N5WRWNW"] # 示例ASIN列表
# 批量获取并保存数据
if __name__ == "__main__":
all_data = []
for asin in ASINS:
response = get_product_details(asin, ACCESS_KEY, SECRET_KEY)
parsed_data = parse_response(response)
if parsed_data:
all_data.append(parsed_data)
save_to_csv(all_data)
print("数据已保存至products.csv")
六、合规与最佳实践
- 遵守亚马逊政策:禁止爬取非公开数据,避免高频请求。
- 数据更新策略:每小时同步一次价格/库存,每日更新评论数据。
- 多语言支持:结合翻译API(如Google Translate)实现本地化展示。
通过以上步骤,您可高效批量获取亚马逊商品信息,支持竞品监控、价格预警等业务场景。