在電商運營和數據分析中,獲取 1688 平臺的商品信息是一項關鍵任務。1688 作為國內領先的 B2B 電商平臺,提供了豐富的商品數據和強大的開放平臺 API 接口,方便開發者獲取商品詳情、評論、SKU 等信息。本文將詳細介紹如何通過 1688 開放平臺 API 獲取商品信息,并提供完整的 Python 示例代碼。
一、準備工作
(一)注冊 1688 開放平臺賬號
- 訪問 1688 開放平臺官網,點擊“注冊”按鈕,填寫相關信息(如企業信息、聯系方式等)完成注冊。
- 登錄開放平臺控制臺,創建一個新的應用,獲取應用的 App Key 和 App Secret,這些憑證將用于后續的 API 調用。
(二)申請接口權限
在開放平臺控制臺中,找到已創建的應用,然后在接口列表中申請所需接口的權限。例如,獲取商品詳情可以申請 alibaba.product.get 接口權限。
(三)安裝必要的 Python 庫
安裝以下 Python 庫,用于發送 HTTP 請求和處理數據:
bash
pip install requests
二、獲取商品詳情信息
(一)構建請求參數
1688 商品詳情接口(alibaba.product.get)需要以下參數:
- method:接口方法名,如 alibaba.product.get。
- app_key:應用的 App Key。
- product_id:商品 ID,可以通過商品詳情頁的 URL 獲取。
- timestamp:當前時間的時間戳(13 位 Unix 時間)。
- sign:簽名,用于驗證請求的合法性。
(二)生成簽名
簽名的生成規則如下:
- 將除 sign 外的參數按字母升序排列。
- 拼接鍵值對為字符串,末尾追加 App Secret。
- 使用 MD5 哈希并轉為大寫。
- 以下是 Python 示例代碼:
Python
import hashlib
import time
def generate_sign(params, app_secret):
sorted_params = sorted(params.items())
sign_str = "&".join([f"{k}{v}" for k, v in sorted_params if k != "sign"])
sign = hashlib.md5((sign_str + app_secret).encode('utf-8')).hexdigest().upper()
return sign
(三)發送請求并解析響應
以下是一個完整的 Python 示例代碼,展示如何調用 1688 商品詳情接口:
Python
import requests
app_key = "YOUR_APP_KEY"
app_secret = "YOUR_APP_SECRET"
product_id = "123456789" # 替換為實際的商品 ID
params = {
"method": "alibaba.product.get",
"app_key": app_key,
"product_id": product_id,
"timestamp": str(int(time.time() * 1000)),
"format": "json",
"v": "2.0"
}
params["sign"] = generate_sign(params, app_secret)
response = requests.get("https://gw.open.1688.com/openapi/param2/2/portals.open/api/", params=params)
data = response.json()
if data["code"] == "0":
product_info = data["result"]["productInfo"]
print(f"商品標題:{product_info['subject']}")
print(f"批發價格區間:{product_info['priceRange']}")
print(f"最小起訂量:{product_info['moq']}")
print("SKU 詳情:")
for sku in product_info["skuList"]:
print(f"規格:{sku['spec']} | 庫存:{sku['stock']} | 價格:{sku['price']}")
else:
print(f"請求失敗,錯誤信息:{data['message']}")
(四)分頁數據抓取
如果需要獲取店鋪全量商品數據,可以使用 alibaba.trade.product.search4trade 接口,并通過分頁機制循環獲?。?/p>
Python復制
def fetch_all_products(seller_member_id, app_key, app_secret):
page_no = 1
all_products = []
while True:
params = {
"method": "alibaba.trade.product.search4trade",
"app_key": app_key,
"seller_member_id": seller_member_id,
"page_no": page_no,
"page_size": 50,
"timestamp": str(int(time.time() * 1000)),
"format": "json",
"v": "2.0"
}
params["sign"] = generate_sign(params, app_secret)
response = requests.get("https://gw.open.1688.com/openapi/param2/2/portals.open/api/", params=params)
data = response.json()
products = data.get("result", {}).get("products", [])
if not products:
break
all_products.extend(products)
page_no += 1
return all_products
三、注意事項
(一)API 接口限制
1688 的 API 接口通常有調用頻率限制,需合理規劃請求頻率,避免被限制訪問。
(二)數據安全
妥善保管 App Key 和 App Secret,確保數據傳輸的安全性。
(三)接口文檔
在使用 API 之前,建議仔細閱讀 1688 開放平臺的官方文檔,以獲取最準確和最新的接口信息。
四、總結
通過上述步驟和代碼示例,你可以輕松地使用 Python 調用 1688 商品詳情接口,獲取商品的詳細信息。這些數據可以用于電商運營、市場分析、選品建議等場景。希望本文的介紹和示例代碼能夠幫助你快速上手并應用到實際項目中。
如遇任何疑問或有進一步的需求,請隨時與我私信或者評論聯系。