以下是一个完整的示例,展示如何在上传图片后调用淘宝按图搜索商品(拍立淘)API进行商品搜索:
1. 准备工作
-
注册账号并获取API密钥:在淘宝开放平台注册账号,创建应用,获取
app_key
和app_secret
。 -
安装依赖库:确保安装了
requests
和base64
库,用于发送HTTP请求和图片编码。
2. 代码实现
以下是一个完整的Python代码示例,展示如何上传图片并调用API进行商品搜索:
Python
import requests
import base64
import hashlib
import time# 替换为你的API密钥
app_key = 'your_app_key'
app_secret = 'your_app_secret'# 图片路径
image_path = 'your_image.jpg'# 读取图片并进行Base64编码
with open(image_path, 'rb') as f:image_data = base64.b64encode(f.read()).decode('utf-8')# 构建公共请求参数
params = {'app_key': app_key,'method': 'taobao.item.search.img','format': 'json','v': '2.0','sign_method': 'md5','timestamp': int(time.time()),'image': image_data # 图片的Base64编码数据
}# 生成签名
def generate_sign(params, app_secret):sorted_params = sorted(params.items(), key=lambda x: x[0])param_str = ''.join([f"{k}{v}" for k, v in sorted_params])sign_str = app_secret + param_str + app_secretreturn hashlib.md5(sign_str.encode()).hexdigest().upper()params['sign'] = generate_sign(params, app_secret)# 发送请求
response = requests.post('https://eco.taobao.com/router/rest', data=params, headers={'Content-Type': 'application/x-www-form-urlencoded'})# 解析响应
if response.status_code == 200:data = response.json()if 'items' in data and 'item' in data['items']:items = data['items']['item']for item in items:print(f"商品标题:{item['title']}")print(f"商品价格:{item['price']}元")print(f"商品链接:{item['detail_url']}")print(f"销量:{item['sales']}")print("-" * 40)else:print("未找到相似商品")
else:print(f"请求失败,状态码:{response.status_code}")
3. 代码说明
-
图片上传:将图片文件读取为二进制数据,并进行Base64编码。
-
生成签名:根据淘宝API的要求,使用
app_secret
和请求参数生成签名。 -
发送请求:将图片数据和签名作为请求参数发送到API接口。
-
解析响应:解析返回的JSON数据,提取商品信息并打印。
4. 注意事项
-
图片要求:图片格式支持JPG/PNG,大小不超过2MB,建议主体商品占比超过60%。
-
调用频率限制:免费版接口默认QPS≤5,超出会触发限流。
-
签名验证:注意参数排序和MD5编码规则。
通过以上步骤,你可以成功调用淘宝拍立淘API,实现按图搜索商品的功能。