以下是一个完整的示例,展示如何在上传图片后调用淘宝按图搜索商品(拍立淘)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_secret
return 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,实现按图搜索商品的功能。