一、核心前提:1688 開放平臺接入(必須完成)
這是所有接口調用的基礎,沒有完成這一步,后續代碼無法正常運行。
訪問1688 開放平臺官網,點擊右上角「注冊 / 登錄」,使用支付寶或淘寶賬號登錄。
登錄后進入「開發者中心」,完成實名認證(個人 / 企業均可):
個人認證:上傳身份證正反面,完成人臉核驗(1-2 個工作日審核通過)。
企業認證:上傳營業執照、法人信息,審核周期稍長(1-3 個工作日)。
注意:未完成實名認證的賬號,無法創建應用和調用任何接口。
步驟 2:創建應用,獲取接口憑證
實名認證通過后,在開發者中心點擊「應用管理」→「創建應用」。
填寫應用信息:應用名稱(自定義,如「1688 類目查詢工具」)、應用描述、應用類型(選擇「工具應用」或「第三方應用」,個人開發者選「工具應用」即可)。
提交應用后,等待平臺審核(一般 1-2 個工作日),審核通過后,即可在應用詳情頁獲取兩個核心憑證:
app_key:應用的唯一標識(類似賬號 ID)。
app_secret:應用的密鑰(類似密碼,嚴禁泄露給他人,不要硬編碼到公開代碼中)。
步驟 3:申請類目接口調用權限
進入應用詳情頁,點擊「權限管理」→「申請權限」。
在權限列表中,搜索「alibaba.category.get」(商品類目查詢接口),勾選該權限并提交申請。
該接口為免費公開權限,一般提交后即時通過(無需人工審核),通過后即可正常調用。
確認權限:在「已擁有權限」中,能看到「alibaba.category.get」,即表示權限申請成功。
二、技術落地:調用接口獲取商品類目(Python 版)
前置準備:安裝依賴庫
本次實現僅需一個requests庫(用于發送 HTTP 請求),打開終端執行以下命令安裝:
bash
運行
pip install requests
完整可運行代碼
該代碼已封裝好簽名邏輯、請求邏輯和層級化解析邏輯,你只需替換app_key和app_secret即可運行。
python
運行
import requests import hashlib import time # ---------------------- 配置區(替換為你自己的應用憑證) ---------------------- # 從1688開放平臺應用詳情頁獲取的app_key和app_secret APP_KEY = "你的_app_key" APP_SECRET = "你的_app_secret" # ---------------------------------------------------------------------------- # 1688商品類目接口地址(固定不變) CATEGORY_API_URL = "https://gw.open.1688.com/openapi/param2/2/portals.open/api/getCategory" def generate_1688_sign(params, app_secret): """ 生成1688 API要求的MD5簽名(核心步驟,簽名錯誤會導致請求失敗) 簽名規則:app_secret + 按字母序拼接的參數鍵值對 + app_secret → MD5加密 → 轉大寫 """ # 1. 按參數名進行字母序排序(1688接口強制要求,否則簽名無效) sorted_param_items = sorted(params.items()) # 2. 拼接參數字符串(無分隔符,直接鍵值相連,如"app_key123timestamp1699999999999") param_concat_str = ''.join([f"{key}{value}" for key, value in sorted_param_items]) # 3. 構造完整的簽名原始字符串 sign_raw_str = app_secret + param_concat_str + app_secret # 4. 生成MD5簽名并轉大寫 md5_hash = hashlib.md5(sign_raw_str.encode("utf-8")) return md5_hash.hexdigest().upper() def get_1688_product_categories(): """ 調用1688接口,獲取完整的商品類目樹數據 """ # 1. 構造接口必填參數(參數名和取值均為1688接口固定要求,不可修改) request_params = { "method": "alibaba.category.get", # 接口方法名,固定不變 "app_key": APP_KEY, # 你的應用ID "timestamp": str(int(time.time() * 1000)), # 13位毫秒級時間戳(防止請求過期) "format": "json", # 返回數據格式,固定為json "v": "2.0", # 接口版本,固定為2.0 "sign_method": "md5" # 簽名方式,固定為md5 } # 2. 生成簽名并添加到請求參數中 request_params["sign"] = generate_1688_sign(request_params, APP_SECRET) # 3. 發送GET請求(類目接口支持GET,更簡單易操作) try: # 發送請求,設置30秒超時(防止網絡卡頓導致程序掛起) response = requests.get(CATEGORY_API_URL, params=request_params, timeout=30) # 檢查HTTP請求狀態碼(200表示請求成功,非200拋出異常) response.raise_for_status() # 解析返回的JSON數據并返回 return response.json() except requests.exceptions.RequestException as e: print(f"? 請求類目接口失敗:{str(e)}") return None def print_category_tree(categories, level=0): """ 遞歸打印類目樹(層級化展示,方便查找目標類目ID) :param categories: 類目列表(接口返回的children數組) :param level: 類目層級(用于縮進,提升可讀性) """ for category in categories: # 提取類目核心信息(使用get方法,防止字段缺失導致程序報錯) cat_id = category.get("categoryId", "未知ID") cat_name = category.get("name", "未知名稱") cat_level = category.get("level", "未知層級") is_leaf = category.get("isLeaf", False) # 是否為葉子類目(無下級子類目) # 構造葉子類目標簽 leaf_tag = "【葉子類目】" if is_leaf else "【可下鉆】" # 構造層級縮進(每級增加2個空格) indent = " " * level # 打印類目信息 print(f"{indent}[{cat_level}級] {cat_name}(ID:{cat_id}){leaf_tag}") # 遞歸打印子類目(如果當前類目有子類目) if "children" in category and category["children"]: print_category_tree(category["children"], level + 1) # ---------------------- 主程序入口 ---------------------- if __name__ == "__main__": print(" 審核編輯 黃宇
-
API
+關注
關注
2文章
2371瀏覽量
66763
發布評論請先 登錄
1688 商品詳情 API 調用與數據解析 Python 實戰
調用1688開放平臺商品分類API獲取分類數據
1688品類API:藍海市場發現,新機會挖掘!
1688商品列表API接口快速上手指南
1688商品詳情API接口使用指南
1688接入API
1688品類API:熱門行業榜單,選品指南!
1688品類API:市場趨勢分析,選品更精準!
1688商品評論API使用指南
1688店鋪所有商品API使用指南
1688商品列表API接口指南
1688商品詳情API指南
如何通過API獲取1688平臺商品詳情
如何通過API獲取1688商品類目數據:技術實現指南
商品類目屬性查詢接口技術實現詳解
接入1688獲得商品類目
評論