一、API接入準(zhǔn)備
1. 注冊亞馬遜開發(fā)者賬號(hào)
- 訪問地址:亞馬遜開放平臺(tái)/萬邦開放平臺(tái)
- 步驟: 創(chuàng)建企業(yè)賬號(hào)(需企業(yè)郵箱)。 創(chuàng)建安全配置文件(Security Profile),獲取Client ID和Client Secret。 提交API使用申請,說明用途(如競品監(jiān)控、價(jià)格追蹤等)。
2. 獲取API密鑰
- 關(guān)鍵憑證: Access Key ID和Secret Key(用于簽名請求)。 OAuth2.0的Refresh Token(用于獲取訪問令牌)。
3. 選擇API類型
- 推薦接口: Product Advertising API(官方接口,需審批)。 SP-API(Selling Partner API) (適用于賣家操作)。 第三方服務(wù)(如Pangolin Scrape API,簡化開發(fā))。
二、核心API調(diào)用流程
1. 單個(gè)商品信息查詢(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)
請求參數(shù):
MarketplaceId
:目標(biāo)站點(diǎn)(如ATVPDKIKX0DER
表示美國站)。Query
:關(guān)鍵詞或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
三、數(shù)據(jù)處理與存儲(chǔ)
1. 解析API響應(yīng)
示例解析函數(shù):
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. 數(shù)據(jù)存儲(chǔ)(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"]])
四、高級(jí)功能與注意事項(xiàng)
1. 頻率限制與緩存
- 限制:默認(rèn)每秒1次請求,可通過申請?zhí)嵘漕~。
- 緩存策略:使用Redis或本地緩存高頻訪問數(shù)據(jù),減少API調(diào)用。
2. 錯(cuò)誤處理
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密鑰無效或權(quán)限不足")
3. 第三方服務(wù)對比
服務(wù) | 優(yōu)點(diǎn) | 適用場景 |
---|---|---|
Product Advertising API | 官方接口,數(shù)據(jù)權(quán)威 | 精準(zhǔn)競品分析 |
Pangolin Scrape API | 無需審批,支持異步回調(diào) | 快速搭建監(jiān)控系統(tǒng) |
五、完整代碼示例(Python)
python
# 配置參數(shù)
ACCESS_KEY = "YOUR_ACCESS_KEY"
SECRET_KEY = "YOUR_SECRET_KEY"
ASINS = ["B07DTH3N2X", "B08N5WRWNW"] # 示例ASIN列表
# 批量獲取并保存數(shù)據(jù)
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("數(shù)據(jù)已保存至products.csv")
六、合規(guī)與最佳實(shí)踐
- 遵守亞馬遜政策:禁止爬取非公開數(shù)據(jù),避免高頻請求。
- 數(shù)據(jù)更新策略:每小時(shí)同步一次價(jià)格/庫存,每日更新評(píng)論數(shù)據(jù)。
- 多語言支持:結(jié)合翻譯API(如Google Translate)實(shí)現(xiàn)本地化展示。
通過以上步驟,您可高效批量獲取亞馬遜商品信息,支持競品監(jiān)控、價(jià)格預(yù)警等業(yè)務(wù)場景。