一、通过OpenAPI获取店铺商品列表
import requests
import hashlib
import time
def get_products(access_token, app_key, app_secret):
timestamp = str(int(time.time()*1000))
params = {
'method': 'alibaba.icbu.product.list.get',
'app_key': app_key,
'timestamp': timestamp,
'auth_token': access_token,
'page_no': 1,
'page_size': 50
}
# 生成签名
param_str = ''.join([f'{k}{v}' for k,v in sorted(params.items())])
sign_str = app_secret + param_str + app_secret
sign = hashlib.md5(sign_str.encode()).hexdigest().upper()
params['sign'] = sign
response = requests.get('https://gw.api.alibaba.com/openapi/param2/2/portals.open/api', params=params)
return response.json()
# 使用示例
products = get_products('your_access_token', 'your_app_key', 'your_app_secret')
print(products)
二、商品数据批量导出方案
Excel导出脚本:
import pandas as pd
from alibaba_openapi import Client
client = Client(app_key='your_app_key', app_secret='your_app_secret')
result = client.execute('alibaba.icbu.product.list.get', {
'page_no': 1,
'page_size': 100
})
df = pd.DataFrame(result['data']['product_list'])
df.to_excel('products_export.xlsx', index=False)
三、前端商品展示组件
// React商品卡片组件示例
function ProductCard({ product }) {
return (
<div className="product-card">
<img src={product.main_image} alt={product.subject} />
<h3>{product.subject}</h3>
<p>价格: {product.price} {product.currency}</p>
<button onClick={() => window.open(product.detail_url)}>查看详情</button>
</div>
);
}
// 商品列表容器
function ProductList({ products }) {
return (
<div className="product-grid">
{products.map(product => (
<ProductCard key={product.product_id} product={product} />
))}
</div>
);
}
四、商品自动上下架管理
def update_product_status(product_ids, status):
"""
status: 'on_sale' 或 'off_shelf'
"""
params = {
'method': 'alibaba.icbu.product.status.update',
'product_id_list': ','.join(product_ids),
'online_status': status
}
# ...签名生成逻辑同上...
response = requests.post('https://gw.api.alibaba.com/openapi/param2/2/portals.open/api', data=params)
return response.json()
五、最佳实践建议
使用分页查询避免超时(建议每页≤100条)
定时缓存商品数据到本地数据库
实现增量同步机制(通过修改时间过滤)
异常处理需包含:API限流、授权过期、网络重试