深入解析:调用识货平台列表搜索API获取商品数据

5 阅读3分钟

引言 在电商数据分析和比价应用中,获取可靠的商品列表信息是关键。识货平台作为一个知名的导购社区,其提供的搜索接口是开发者获取热门商品数据的重要途径。本文将详细解析如何调用识货的列表搜索API,包括接口地址、参数传递、签名验证以及响应处理,并提供完整的Python示例代码。


一、接口基本信息

通过分析网络请求,典型的识货列表搜索API路径可能为:

https://api.shihuo.com/search/list

该接口通常采用HTTPS协议和GET请求方法。


二、核心请求参数

调用接口需构造包含以下关键参数的URL:

  1. 关键词参数

    • keyword: 搜索关键词(如"跑鞋"),需进行URL编码。
  2. 分页参数

    • page: 当前页码(从1开始)
    • pageSize: 每页数据量(通常为20)
  3. 排序参数

    • sort: 排序方式(例如"hot"表示按热度排序)
  4. 安全验证参数

    • 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']}")


六、注意事项

  1. 密钥安全
    切勿在前端代码中暴露SECRET_KEY,应通过服务端中转调用。
  2. 频率限制
    注意接口的请求频率限制(如QPS),避免触发风控。
  3. 数据更新
    商品价格和库存具有时效性,需定期更新数据。
  4. 版本兼容
    关注API版本变更公告,及时调整参数结构。

结语
通过本文的详细解析,开发者可以快速集成识货商品搜索能力到自己的应用中。在实际使用时,请务必遵守平台API使用协议,合理合法地获取数据。对于返回数据的深度处理(如价格监控、商品推荐等),可结合更多业务逻辑进一步扩展。