全部
常见问题
产品动态
精选推荐

【淘宝|京东|1688】item_search:按关键字搜索商品 API 接口实战指南

管理 管理 编辑 删除

在电商领域,通过关键词搜索商品是常见的需求。无论是淘宝、京东还是 1688 等平台,都提供了相应的 API 接口,允许开发者根据关键词搜索商品,并获取商品列表。本文将详细介绍如何使用 Python 调用这些接口,并解析返回的数据。

一、准备工作

(一)注册开发者账号

在使用电商平台的 API 之前,需要在对应的开放平台注册成为开发者。例如,淘宝开放平台、京东开放平台等。注册过程中,你需要提供一些基本信息,如联系方式、公司名称等。

(二)创建应用并获取 API 密钥

登录开发者账号后,创建一个新的应用,并为其申请调用商品搜索接口的权限。在申请时,你需要提供关于你的应用的详细信息,包括应用名称、应用描述、使用场景等。申请通过后,你将获得 App KeyApp Secret,这两个凭证后续会用于身份验证。

(三)安装必要的 Python 库

在开始编写代码之前,确保你的开发环境已安装以下库:

  • requests:用于发送 HTTP 请求。
  • json:用于解析 JSON 数据。
  • 如果还未安装,可以通过以下命令安装:


pip install requests

二、接口调用实战

(一)淘宝商品搜索接口调用

以下是基于 Python 的淘宝商品搜索接口调用实现,包含签名生成、请求发送及数据解析功能。

Python

import time
import hashlib
import requests

class TaobaoItemSearch:
    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"
        self.session = requests.Session()
        self.session.mount('https://', requests.adapters.HTTPAdapter(pool_connections=10, pool_maxsize=50))

    def generate_sign(self, params):
        sorted_params = sorted(params.items())
        param_str = ''.join([f"{k}{v}" for k, v in sorted_params])
        sign = hashlib.md5((self.app_secret + param_str + self.app_secret).encode()).hexdigest().upper()
        return sign

    def search_items(self, keyword, page=1, page_size=20, sort='sale-desc'):
        timestamp = time.strftime("%Y-%m-%d %H:%M:%S")
        params = {
            "app_key": self.app_key,
            "method": "taobao.items.search",
            "v": "2.0",
            "timestamp": timestamp,
            "format": "json",
            "sign_method": "md5",
            "q": keyword,
            "page": page,
            "page_size": page_size,
            "sort": sort,
            "fields": "num_iid,title,pict_url,price,nick,seller_id"
        }
        params["sign"] = self.generate_sign(params)
        response = self.session.get(self.api_url, params=params)
        if response.status_code == 200:
            return response.json()
        return None

# 使用示例
app_key = "YOUR_APP_KEY"
app_secret = "YOUR_APP_SECRET"
searcher = TaobaoItemSearch(app_key, app_secret)
result = searcher.search_items("女装")
if result:
    items = result.get("items_search_response", {}).get("items", {}).get("item", [])
    for item in items:
        print(f"商品标题: {item['title']}")
        print(f"价格: {item['price']}")
        print(f"图片链接: {item['pict_url']}")
        

(二)京东商品搜索接口调用

以下是基于 Python 的京东商品搜索接口调用实现:

import hashlib
import time
import requests

def generate_sign(params, app_secret):
    sorted_params = sorted(params.items())
    param_str = ''.join([f"{k}{v}" for k, v in sorted_params])
    sign = hashlib.md5((app_secret + param_str + app_secret).encode()).hexdigest().upper()
    return sign

def search_jd_items(app_key, app_secret, keyword, page=1, page_size=20):
    timestamp = time.strftime("%Y-%m-%d %H:%M:%S")
    params = {
        "method": "JD.item_search",
        "app_key": app_key,
        "timestamp": timestamp,
        "v": "1.0",
        "sign_method": "md5",
        "keyword": keyword,
        "pageIndex": page,
        "pageSize": page_size,
        "fields": "skuId,title,price,imageUrl"
    }
    params["sign"] = generate_sign(params, app_secret)
    response = requests.get("https://api.jd.com/routerjson", params=params)
    if response.status_code == 200:
        return response.json()
    return None

# 使用示例
app_key = "YOUR_APP_KEY"
app_secret = "YOUR_APP_SECRET"
result = search_jd_items(app_key, app_secret, "手机")
if result:
    items = result.get("item_search_response", {}).get("items", [])
    for item in items:
        print(f"商品标题: {item['title']}")
        print(f"价格: {item['price']}")
        print(f"图片链接: {item['imageUrl']}")
        

(三)1688 商品搜索接口调用

以下是基于 Python 的 1688 商品搜索接口调用实现:

import requests
import hashlib
import time

def generate_sign(params, app_secret):
    sorted_params = sorted(params.items())
    param_str = ''.join([f"{k}{v}" for k, v in sorted_params])
    sign = hashlib.md5((app_secret + param_str + app_secret).encode()).hexdigest().upper()
    return sign

def search_1688_items(app_key, app_secret, keyword, page=1, page_size=20):
    params = {
        "app_key": app_key,
        "method": "com.alibaba.product.search",
        "v": "1.0",
        "timestamp": time.strftime("%Y-%m-%d %H:%M:%S"),
        "format": "json",
        "keyword": keyword,
        "page_no": page,
        "page_size": page_size,
        "fields": "productId,title,priceRange,moq,stock,imageUrls"
    }
    params["sign"] = generate_sign(params, app_secret)
    response = requests.get("https://gw.open.1688.com/openapi/param2/1/com.alibaba.product.search/", params=params)
    if response.status_code == 200:
        return response.json()
    return None

# 使用示例
app_key = "YOUR_APP_KEY"
app_secret = "YOUR_APP_SECRET"
result = search_1688_items(app_key, app_secret, "运动鞋")
if result:
    items = result.get("result", {}).get("products", [])
    for item in items:
        print(f"商品标题: {item['title']}")
        print(f"价格范围: {item['priceRange']}")
        print(f"起订量: {item['moq']}")
        print(f"库存: {item['stock']}")
        

三、注意事项

(一)频率限制

电商平台对 API 的调用频率有限制,通常为每秒 1-2 次。在开发中需合理控制请求频率,避免被限流。

(二)数据安全

确保在处理敏感信息时遵守相关隐私和安全法规。

(三)错误处理

在实际应用中,要对可能出现的错误进行捕获和处理,如网络请求异常、数据解析错误等。

(四)数据合规

禁止存储用户隐私数据(如手机号、地址),不得直接展示商品价格,需通过电商平台的链接跳转。

四、总结

通过以上步骤,你可以使用 Python 编写程序高效地获取并处理电商平台的关键词搜索结果数据。希望本文能为开发者提供有价值的参考,帮助他们更好地利用电商平台的 API 接口获取数据。

如遇任何疑问或有进一步的需求,请随时与我私信或者评论联系。

请登录后查看

Jelena技术达人 最后编辑于2025-09-29 16:58:11

快捷回复
回复
回复
回复({{post_count}}) {{!is_user ? '我的回复' :'全部回复'}}
排序 默认正序 回复倒序 点赞倒序

{{item.user_info.nickname ? item.user_info.nickname : item.user_name}} LV.{{ item.user_info.bbs_level || item.bbs_level }}

作者 管理员 企业

{{item.floor}}# 同步到gitee 已同步到gitee {{item.is_suggest == 1? '取消推荐': '推荐'}}
{{item.is_suggest == 1? '取消推荐': '推荐'}}
沙发 板凳 地板 {{item.floor}}#
{{item.user_info.title || '暂无简介'}}
附件

{{itemf.name}}

{{item.created_at}}  {{item.ip_address}}
打赏
已打赏¥{{item.reward_price}}
{{item.like_count}}
{{item.showReply ? '取消回复' : '回复'}}
删除
回复
回复

{{itemc.user_info.nickname}}

{{itemc.user_name}}

回复 {{itemc.comment_user_info.nickname}}

附件

{{itemf.name}}

{{itemc.created_at}}
打赏
已打赏¥{{itemc.reward_price}}
{{itemc.like_count}}
{{itemc.showReply ? '取消回复' : '回复'}}
删除
回复
回复
查看更多
打赏
已打赏¥{{reward_price}}
103
{{like_count}}
{{collect_count}}
添加回复 ({{post_count}})

相关推荐

快速安全登录

使用微信扫码登录
{{item.label}} 加精
{{item.label}} {{item.label}} 板块推荐 常见问题 产品动态 精选推荐 首页头条 首页动态 首页推荐
取 消 确 定
回复
回复
问题:
问题自动获取的帖子内容,不准确时需要手动修改. [获取答案]
答案:
提交
bug 需求 取 消 确 定
打赏金额
当前余额:¥{{rewardUserInfo.reward_price}}
{{item.price}}元
请输入 0.1-{{reward_max_price}} 范围内的数值
打赏成功
¥{{price}}
完成 确认打赏

微信登录/注册

切换手机号登录

{{ bind_phone ? '绑定手机' : '手机登录'}}

{{codeText}}
切换微信登录/注册
暂不绑定
CRMEB客服

CRMEB咨询热线 咨询热线

400-8888-794

微信扫码咨询

CRMEB开源商城下载 源码下载 CRMEB帮助文档 帮助文档
返回顶部 返回顶部
CRMEB客服