淘宝 + 京东多平台关键字搜索API 接口(详解)

0 阅读5分钟

整合淘宝和京东的商品搜索与比价 API,能够为用户提供跨平台的价格对比服务,帮助消费者找到最优价格,同时辅助商家进行市场调研和定价策略制定。以下是该类 API 的详细解析与示例实现:

一、核心功能概述

1. 主要接口功能

  • 多平台搜索:支持同时在淘宝和京东平台搜索商品
  • 价格对比:整合两平台商品的价格、促销信息进行对比
  • 商品匹配:智能识别同款或相似商品(基于标题、品牌、型号等)
  • 价格走势:提供历史价格数据和价格波动曲线
  • 筛选排序:支持按价格、销量、评分等多维度筛选

二、API 技术实现

1. 淘宝 API 调用(参考前文示例)

python

运行

class TaobaoAPI:
    def __init__(self, app_key, app_secret):
        self.app_key = app_key
        self.app_secret = app_secret
        self.api_url = "https://eco.taobao.com/router/rest"
    
    def generate_sign(self, params):
        """生成API签名"""
        sorted_params = sorted(params.items(), key=lambda x: x[0])
        sign_str = self.app_secret + ''.join([f"{k}{v}" for k, v in sorted_params]) + self.app_secret
        return hashlib.md5(sign_str.encode('utf-8')).hexdigest().upper()
    
    def search_items(self, keyword, page=1, page_size=20):
        """搜索淘宝商品"""
        method = "taobao.items.search"
        params = {
            "q": keyword,
            "page_no": page,
            "page_size": page_size,
            "fields": "num_iid,title,nick,price,original_price,pic_url,sell_count"
        }
        params["sign"] = self.generate_sign(params)
        response = requests.get(self.api_url, params=params)
        return response.json()

2. 京东 API 调用(示例)

python

运行

class JDAPI:
    def __init__(self, app_key, app_secret):
        self.app_key = app_key
        self.app_secret = app_secret
        self.api_url = "https://api.jd.com/routerjson"
    
    def generate_sign(self, params):
        """生成京东API签名"""
        sorted_params = sorted(params.items(), key=lambda x: x[0])
        sign_str = self.app_secret + ''.join([f"{k}{v}" for k, v in sorted_params]) + self.app_secret
        return hashlib.md5(sign_str.encode('utf-8')).hexdigest().upper()
    
    def search_items(self, keyword, page=1, page_size=20):
        """搜索京东商品"""
        method = "jingdong.ware.search"
        timestamp = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
        
        params = {
            "app_key": self.app_key,
            "method": method,
            "timestamp": timestamp,
            "format": "json",
            "v": "2.0",
            "sign_method": "md5",
            "keyword": keyword,
            "page": page,
            "pageSize": page_size
        }
        
        params["sign"] = self.generate_sign(params)
        response = requests.post(self.api_url, data=params)
        return response.json()

3. 比价整合实现

python

运行

class PriceComparisonAPI:
    def __init__(self, taobao_api, jd_api):
        self.taobao_api = taobao_api
        self.jd_api = jd_api
    
    def compare_prices(self, keyword, page=1, page_size=10):
        """同时搜索淘宝和京东并比较价格"""
        # 并行调用两个平台的API(使用asyncio可进一步优化)
        taobao_result = self.taobao_api.search_items(keyword, page, page_size)
        jd_result = self.jd_api.search_items(keyword, page, page_size)
        
        # 解析结果
        taobao_items = self._parse_taobao_items(taobao_result)
        jd_items = self._parse_jd_items(jd_result)
        
        # 匹配同款商品(简化版:基于标题相似度)
        matched_pairs = self._match_similar_items(taobao_items, jd_items)
        
        return {
            "keyword": keyword,
            "total_taobao": len(taobao_items),
            "total_jd": len(jd_items),
            "matched_pairs": matched_pairs
        }
    
    def _parse_taobao_items(self, result):
        """解析淘宝商品数据"""
        items = []
        if "items_search_response" in result:
            for item in result["items_search_response"]["items"]["item"]:
                items.append({
                    "platform": "taobao",
                    "item_id": item["num_iid"],
                    "title": item["title"],
                    "price": float(item["price"]),
                    "original_price": float(item.get("original_price", item["price"])),
                    "seller": item["nick"],
                    "sales": int(item.get("sell_count", 0)),
                    "image_url": item["pic_url"]
                })
        return items
    
    def _parse_jd_items(self, result):
        """解析京东商品数据"""
        items = []
        if "jingdong_ware_search_response" in result:
            for item in result["jingdong_ware_search_response"]["wareInfoList"]:
                items.append({
                    "platform": "jd",
                    "item_id": item["wareId"],
                    "title": item["name"],
                    "price": float(item["price"]),
                    "original_price": float(item.get("originalPrice", item["price"])),
                    "seller": item.get("shopName", "京东自营"),
                    "sales": int(item.get("sales", 0)),
                    "image_url": item.get("imageUrl", "")
                })
        return items
    
    def _match_similar_items(self, taobao_items, jd_items):
        """匹配淘宝和京东的相似商品(简化版)"""
        from difflib import SequenceMatcher
        
        matched_pairs = []
        for tb_item in taobao_items:
            best_match = None
            highest_similarity = 0
            
            for jd_item in jd_items:
                # 计算标题相似度
                similarity = SequenceMatcher(None, tb_item["title"], jd_item["title"]).ratio()
                
                if similarity > highest_similarity and similarity > 0.6:  # 设定相似度阈值
                    highest_similarity = similarity
                    best_match = jd_item
            
            if best_match:
                # 计算价格差和百分比
                price_diff = tb_item["price"] - best_match["price"]
                price_percent = (price_diff / best_match["price"]) * 100
                
                matched_pairs.append({
                    "taobao_item": tb_item,
                    "jd_item": best_match,
                    "price_diff": price_diff,
                    "price_percent": price_percent,
                    "similarity": highest_similarity
                })
        
        return matched_pairs

三、API 响应示例

1. 比价结果示例

json

{
  "keyword": "iPhone 15",
  "total_taobao": 20,
  "total_jd": 18,
  "matched_pairs": [
    {
      "taobao_item": {
        "platform": "taobao",
        "item_id": "612345678901",
        "title": "Apple iPhone 15 256GB 黑色 全网通",
        "price": 7999.0,
        "original_price": 8999.0,
        "seller": "苹果官方旗舰店",
        "sales": 1234,
        "image_url": "https://img.alicdn.com/iphone15.jpg"
      },
      "jd_item": {
        "platform": "jd",
        "item_id": "100060000001",
        "title": "Apple iPhone 15 256GB 黑色 移动联通电信5G手机",
        "price": 7899.0,
        "original_price": 8999.0,
        "seller": "京东自营",
        "sales": 2345,
        "image_url": "https://img10.360buyimg.com/iphone15.jpg"
      },
      "price_diff": 100.0,
      "price_percent": 1.27,
      "similarity": 0.85
    },
    {
      "taobao_item": {
        "platform": "taobao",
        "item_id": "623456789012",
        "title": "iPhone 15 Pro 256GB 暗紫色 全网通",
        "price": 9999.0,
        "original_price": 10999.0,
        "seller": "授权经销商",
        "sales": 876,
        "image_url": "https://img.alicdn.com/iphone15pro.jpg"
      },
      "jd_item": {
        "platform": "jd",
        "item_id": "100060000002",
        "title": "Apple iPhone 15 Pro 256GB 暗紫色 移动联通电信5G手机",
        "price": 9899.0,
        "original_price": 10999.0,
        "seller": "京东自营",
        "sales": 1234,
        "image_url": "https://img10.360buyimg.com/iphone15pro.jpg"
      },
      "price_diff": 100.0,
      "price_percent": 1.01,
      "similarity": 0.82
    }
  ]
}

四、关键技术挑战与解决方案

1. 商品匹配算法

  • 挑战:两平台商品标题、型号表述存在差异

  • 解决方案

    • 结合 NLP 技术提取核心关键词(品牌、型号、规格)
    • 计算标题相似度(如余弦相似度、编辑距离)
    • 利用商品特征(如颜色、容量、尺寸)辅助匹配

2. 价格实时性

  • 挑战:两平台价格更新频率不同

  • 解决方案

    • 设置合理的缓存策略(如 15-30 分钟刷新)
    • 对价格波动敏感的商品增加更新频率
    • 标注价格采集时间供用户参考

3. 并发请求优化

  • 挑战:同时调用多个 API 可能触发限流

  • 解决方案

    • 使用异步请求(如 aiohttp、asyncio)提升效率
    • 实现请求队列和限流控制
    • 分散请求时间避免集中调用

五、应用场景与价值

1. 消费者端应用

  • 比价工具:帮助用户快速找到最低价商品
  • 价格监控:设置价格提醒,当心仪商品降价时通知用户
  • 购物决策辅助:展示多平台价格差异和用户评价

2. 商家端应用

  • 竞品价格跟踪:实时监控竞争对手定价策略
  • 动态定价系统:根据市场价格自动调整自身售价
  • 市场调研分析:分析不同平台用户购买偏好和价格敏感度

通过整合淘宝和京东的搜索比价 API,开发者可以构建功能强大的电商辅助工具,为消费者和商家创造显著价值。在实际开发中,需注意遵守平台 API 使用规范,优化系统性能,并不断改进商品匹配算法以提升比价准确性。