引言 在电商数据分析和比价应用中,获取可靠的商品列表信息是关键。识货平台作为一个知名的导购社区,其提供的搜索接口是开发者获取热门商品数据的重要途径。本文将详细解析如何调用识货的列表搜索API,包括接口地址、参数传递、签名验证以及响应处理,并提供完整的Python示例代码。
一、接口基本信息
通过分析网络请求,典型的识货列表搜索API路径可能为:
https://api.shihuo.com/search/list
该接口通常采用HTTPS协议和GET请求方法。
二、核心请求参数
调用接口需构造包含以下关键参数的URL:
-
关键词参数
keyword: 搜索关键词(如"跑鞋"),需进行URL编码。
-
分页参数
page: 当前页码(从1开始)pageSize: 每页数据量(通常为20)
-
排序参数
sort: 排序方式(例如"hot"表示按热度排序)
-
安全验证参数
timestamp: 当前时间戳(精确到秒)sign: 请求签名(用于防篡改,需按平台规则生成)
签名生成逻辑示例
签名通常通过对参数按字典序排序后拼接密钥计算MD5:import hashlib def generate_sign(params, secret_key): sorted_params = sorted(params.items()) raw_str = '&'.join([f'{k}={v}' for k, v in sorted_params]) sign_str = raw_str + secret_key return hashlib.md5(sign_str.encode()).hexdigest()
三、请求头设置
需在HTTP Header中设置以下字段:
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) ...",
"Referer": "https://www.shihuo.com/",
"X-Requested-With": "XMLHttpRequest"
}
四、处理API响应
成功调用将返回JSON格式数据,典型结构如下:
{
"code": 200,
"message": "success",
"data": {
"list": [
{
"itemId": "123456",
"title": "Nike Air Zoom Pegasus 38",
"price": "599.00",
"imageUrl": "https://img.shihuo.com/.../sample.jpg"
},
... // 其他商品项
],
"totalCount": 150
}
}
关键字段说明:
code=200表示请求成功data.list包含商品对象数组data.totalCount为总结果数
五、Python完整调用示例
import requests
import time
import hashlib
from urllib.parse import quote
# 基础配置
API_URL = "https://api.shihuo.com/search/list"
SECRET_KEY = "your_secret_key" # 需向平台申请
def search_shihuo(keyword, page=1, page_size=20):
# 构造基础参数
params = {
"keyword": quote(keyword),
"page": page,
"pageSize": page_size,
"sort": "hot",
"timestamp": int(time.time())
}
# 生成签名
params["sign"] = generate_sign(params, SECRET_KEY)
# 发送请求
resp = requests.get(API_URL, params=params, headers=headers)
if resp.status_code == 200:
data = resp.json()
if data["code"] == 200:
return data["data"]
else:
print(f"API错误: {data['message']}")
return None
# 示例调用
result = search_shihuo("篮球鞋")
if result:
print(f"共找到 {result['totalCount']} 条结果")
for item in result["list"]:
print(f"商品ID: {item['itemId']}, 名称: {item['title']}, 价格: {item['price']}")
六、注意事项
- 密钥安全
切勿在前端代码中暴露SECRET_KEY,应通过服务端中转调用。 - 频率限制
注意接口的请求频率限制(如QPS),避免触发风控。 - 数据更新
商品价格和库存具有时效性,需定期更新数据。 - 版本兼容
关注API版本变更公告,及时调整参数结构。
结语
通过本文的详细解析,开发者可以快速集成识货商品搜索能力到自己的应用中。在实际使用时,请务必遵守平台API使用协议,合理合法地获取数据。对于返回数据的深度处理(如价格监控、商品推荐等),可结合更多业务逻辑进一步扩展。