一、前期准备
- 注册开放平台账号
- 访问阿里巴巴开放平台,完成企业/个人实名认证,绑定支付宝账号。
- 创建应用并申请"图片搜索"权限(如
item_search_img接口),获取App Key 和App Secret。
- 图片准备
- 确保图片清晰、完整,反映商品特征。支持JPG/PNG格式,大小建议≤5MB。
- 若图片存储在外部服务器,需先通过
upload_img接口上传至1688图片服务器,获取图片URL(如https://img.alicdn.com/...)。
二、接口调用步骤
-
生成请求签名
-
构造请求参数(如
app_key、api_name=item_search_img、imgid=图片URL),按字段名排序后拼接字符串,结合App Secret生成MD5签名。 -
示例代码(Python):
python|-------------------------------------------------------------|
|import hashlib|
|import time|
| |
|app_key = "YOUR_APP_KEY"|
|app_secret = "YOUR_APP_SECRET"|
|imgid = "https://example.com/product.jpg" # 图片URL|
| |
|# 生成签名|
|def generate_sign(params):|
|sorted_params = sorted(params.items())|
|query_str = ''.join(f"{k}{v}" for k, v in sorted_params)|
|sign_str = f"{app_secret}{query_str}{app_secret}"|
|return hashlib.md5(sign_str.encode()).hexdigest().upper()|
| |
|params = {|
|"key": app_key,|
|"api_name": "item_search_img",|
|"imgid": imgid,|
|"cache": "yes", # 启用缓存|
|"result_type": "json",|
|"lang": "cn",|
|"timestamp": int(time.time())|
|}|
|params["sign"] = generate_sign(params)|
-
-
发送请求并解析响应
-
请求URL:
https://api-gw.onebound.cn/1688/item_search_img/(具体以文档为准)。 -
响应返回JSON格式数据,包含相似商品列表(
items字段),每个商品包含item_id、title、price、pic_url、detail_url等关键信息。 -
示例响应片段:
json|-------------------------------------------------------------------|
|{|
|"code": 200,|
|"message": "success",|
|"data": {|
|"items": [|
|{|
|"item_id": "678901234567",|
|"title": "夏季纯棉T恤",|
|"price": "¥29.90",|
|"pic_url": "https://img.alicdn.com/img/item/678901234567.jpg",|
|"detail_url": "https://detail.1688.com/offer/678901234567.html"|
|}|
|]|
|}|
|}|
-
-
代码实现(完整示例)
python|----------------------------------------------------------------------------|
|import requests|
|import json|
| |
|def search_by_image(app_key, app_secret, imgid):|
|url = "https://api-gw.onebound.cn/1688/item_search_img/"|
|params = {|
|"key": app_key,|
|"secret": app_secret,|
|"imgid": imgid,|
|"limit": 10 # 返回结果数量限制|
|}|
|# 生成签名并添加到params|
|params["sign"] = generate_sign(params) # 签名函数同上|
| |
|response = requests.get(url, params=params)|
|if response.status_code == 200:|
|data = response.json()|
|if data.get("code") == 200:|
|return data["data"]["items"]|
|else:|
|print(f"错误:{data.get('message')}")|
|else:|
|print(f"请求失败,状态码:{response.status_code}")|
| |
|# 调用示例|
|app_key = "YOUR_APP_KEY"|
|app_secret = "YOUR_APP_SECRET"|
|imgid = "https://img.alicdn.com/.../product.jpg"|
|results = search_by_image(app_key, app_secret, imgid)|
|for item in results:|
|print(f"商品ID:{item['item_id']}, 标题:{item['title']}, 价格:{item['price']}")|
三、关键注意事项
- 调用限制与合规
- 免费版API每日调用上限5000次,企业版可申请提升配额。
- 避免高频请求(建议间隔≥0.2秒),否则触发403/500错误或封IP。
- 禁止爬取敏感信息(如用户隐私),遵守1688平台规则。
- 错误处理
- 401:认证失败,检查App Key/Secret是否正确。
- 429:请求频率过高,需降低调用速度或申请更高配额。
- 500:服务器内部错误,可重试或联系平台支持。
- 优化建议
- 缓存机制:对高频搜索的商品ID或图片URL进行本地缓存,减少API调用。
- 异步处理:批量图片搜索时,使用多线程/异步请求提升效率。
- 数据解析:提取
items中的detail_url,结合item_get接口获取商品详情(如SKU、库存)。
四、应用场景示例
- 电商选品:用户上传竞品图片,快速找到1688同款/相似商品,分析价格、起订量、供应商信息。
- 供应链溯源:通过图片识别源头供应商,实现供应链透明化。
- 智能比价:对比多平台商品价格,辅助采购决策。
通过以上步骤,可实现1688拍立淘接口的高效对接,广泛应用于电商选品、竞品分析、供应链管理等场景。需持续关注平台API文档更新,确保接口稳定性与合规性。