一、前期准备
- 注册开放平台账号
- 访问阿里巴巴开放平台,完成企业/个人实名认证,绑定支付宝账号。
- 创建应用并申请"图片搜索"权限(如
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文档更新,确保接口稳定性与合规性。