?
場景需求: 在開發電商ERP、數據采集工具或競品分析系統時,經常需要獲取1688平臺上某個店鋪的全部商品信息(如標題、價格、SKU、庫存等)。本文將介紹如何通過1688開放平臺提供的官方API實現這一功能。
一、核心接口:alibaba.product.getSellerProductList
這是1688開放平臺提供的用于獲取賣家商品列表的API。通過合理配置請求參數和分頁處理,即可獲取全量商品數據。
接口地址: https://api.1688.com/router/rest
請求方式: POST
數據格式: application/x-www-form-urlencoded
二、關鍵實現步驟
1. 準備環境
注冊1688開放平臺賬號,創建應用并獲取 appKey 和 appSecret。
引導賣家完成授權,獲取店鋪的 access_token(需 seller_view 權限)。
2. 基礎請求參數
base_params = { 'method': 'alibaba.product.getSellerProductList', 'app_key': 'YOUR_APP_KEY', 'access_token': 'SELLER_ACCESS_TOKEN', 'timestamp': str(int(time.time() * 1000)), # 毫秒時間戳 'format': 'json', 'v': '2.0', 'sign_method': 'md5' }

3. 分頁控制參數
page_no: 當前頁碼(從1開始)
page_size: 每頁條數(建議不超過50)
# 示例:請求第2頁,每頁30條
page_params = {
'page_no': 2,
'page_size': 30
}

4. 簽名生成
所有參數需按字母序排序后拼接,加上 appSecret 進行MD5簽名:
def generate_sign(params, app_secret):
param_str = '&'.join([f'{k}{v}' for k, v in sorted(params.items())])
full_str = f'{app_secret}{param_str}{app_secret}'
return hashlib.md5(full_str.encode()).hexdigest().upper()

三、完整請求示例(Python)
import requests
import time
import hashlib
def fetch_all_products(app_key, app_secret, access_token, max_page=50):
all_products = []
page_no = 1
while page_no <= max_page:
# 1. 構造基礎參數
params = {
'method': 'alibaba.product.getSellerProductList',
'app_key': app_key,
'access_token': access_token,
'timestamp': str(int(time.time() * 1000)),
'format': 'json',
'v': '2.0',
'sign_method': 'md5',
'page_no': page_no,
'page_size': 50
}
# 2. 生成簽名
params['sign'] = generate_sign(params, app_secret)
# 3. 發送請求
resp = requests.post('https://api.1688.com/router/rest', data=params)
data = resp.json()
# 4. 處理異常
if 'error' in data:
print(f"Error: {data['error']['msg']} (Code: {data['error']['code']})")
break
# 5. 存儲當前頁商品
products = data['result']['productInfos']['productInfo']
all_products.extend(products)
# 6. 分頁終止判斷
if len(products) < params['page_size']:
break
page_no += 1
time.sleep(0.5) # 避免請求過頻
return all_products

四、響應數據結構解析
成功響應示例:
{
"result": {
"productInfos": {
"productInfo": [
{
"productId": 1234567890,
"subject": "商品標題",
"price": "99.00",
"unit": "件",
"status": "published"
},
// ... 其他商品
]
},
"totalCount": 120 // 店鋪商品總數
}
}

五、注意事項
頻率限制:單個應用默認每秒10次請求,需根據 totalCount 控制分頁節奏。
字段覆蓋:若需獲取詳情(如描述、SKU),需二次調用 alibaba.product.get 接口。
授權有效期:access_token 有效期通常為30天,需實現刷新機制。
錯誤碼處理:
isv.missing-parameter: 參數缺失
isv.invalid-access-token: 令牌失效
isp.api-qps-limit: 請求超頻
六、優化建議
異步抓取:使用生產者-消費者模型提升采集效率。
本地緩存:存儲 productId 避免重復獲取詳情。
增量同步:通過 modify_stamp 參數僅拉取變更商品。
通過上述實現,可穩定獲取店鋪商品數據。建議詳細閱讀1688API文檔,根據業務需求擴展字段處理邏輯。
審核編輯 黃宇
?
-
API
+關注
關注
2文章
2401瀏覽量
66855
發布評論請先 登錄
???????如何通過淘寶開放平臺API獲取指定店鋪的所有商品信息
如何通過1688開放平臺API獲取指定店鋪所有商品
評論