唯品会数据采集API接口||电商API数据采集

唯品会数据采集,优先走合规第三方 API (个人 / 企业均可);企业可申请官方开放平台 API(仅限合作方)。


一、合规路径选择(必看)

1. 官方开放平台(企业级)
  • 入口:唯品会开放平台
  • 适用:企业 / 商家 / 供应链合作方,个人无法申请
  • 核心接口(需审核):
    • vip.item.get:商品详情(价格、库存、规格、折扣)
    • item.search:商品搜索(关键词、分类、品牌)
    • comment.query:商品评论(评分、内容)
  • 流程:企业认证 → 创建应用 → 申请权限 → 获取 AppKey/AppSecret → 签名调用
2. 第三方合规 API(个人 / 企业通用,推荐)
  • 优势:无需企业资质、秒级开通、开箱即用
  • 核心能力:商品搜索、详情、价格、库存、评论、活动
  • 风险:严禁爬虫,仅用合规 API

二、第三方 API 对接实战(Python)

API 唯品会商品 API为例,完整可运行代码。

步骤 1:注册并获取密钥
  1. 访问API→ 注册 → 实名认证
  2. 搜索「唯品会商品 」,找到「唯品会商品详情查询
  3. 领取免费额度 → 复制 API Key
步骤 2:Python 代码实现

python

运行

复制代码
import requests
import json

def get_vip_product_detail(goods_id):
    """
    调用第三方API获取唯品会商品详情
    :param goods_id: 唯品会商品ID(链接中goodsId=后的数字)
    :return: 商品信息字典
    """
    # 配置(替换为你的信息)
    api_url = "https://eolink.o.apispace.com/vip-goods/detail"
    headers = {
        "X-APISpace-Token": "你的API Key",  # 替换
        "Authorization-Type": "apikey",
        "Content-Type": "application/x-www-form-urlencoded"
    }
    data = {"goodsId": goods_id}

    try:
        resp = requests.post(api_url, headers=headers, data=data, timeout=10)
        if resp.status_code == 200:
            res = resp.json()
            if res.get("code") == 200:
                data = res.get("data", {})
                return {
                    "商品ID": goods_id,
                    "商品名称": data.get("goodsName"),
                    "品牌": data.get("brandName"),
                    "现价": data.get("salePrice"),
                    "原价": data.get("marketPrice"),
                    "折扣": data.get("discount"),
                    "库存": data.get("stock"),
                    "分类": f"{data.get('cat1stName')}>{data.get('cat2ndName')}",
                    "主图": data.get("mainPic"),
                    "活动": data.get("activityName")
                }
            else:
                print(f"API错误:{res.get('msg')}")
        else:
            print(f"请求失败:{resp.status_code} {resp.text}")
    except Exception as e:
        print(f"异常:{e}")
    return None

# 测试
if __name__ == "__main__":
    goods_id = "1710613157"  # 替换为真实商品ID
    info = get_vip_product_detail(goods_id)
    if info:
        print(json.dumps(info, ensure_ascii=False, indent=2))
步骤 3:商品搜索 API(比价必备)

python

运行

复制代码
def search_vip_products(keyword, page=1, page_size=20):
    """唯品会商品搜索"""
    api_url = "https://eolink.o.apispace.com/vip-goods/search"
    headers = {
        "X-APISpace-Token": "你的API Key",
        "Authorization-Type": "apikey",
        "Content-Type": "application/x-www-form-urlencoded"
    }
    data = {
        "keyword": keyword,
        "page": page,
        "pageSize": page_size
    }
    resp = requests.post(api_url, headers=headers, data=data)
    return resp.json()

# 搜索示例
# search_vip_products("羽绒服")

三、官方 API 对接(企业版)

1. 认证与密钥
  • 注册 → 企业认证 → 创建应用 → 获取 AppKey/AppSecret
  • 采用 OAuth2.0MD5 签名 认证
2. 签名规则(官方)
  1. 所有参数(不含sign)按ASCII 升序排序
  2. 拼接为 key1=value1&key2=value2
  3. 首尾加 AppSecret → MD5 加密 → 大写 → 得到sign
3. 商品详情调用示例(Python)

python

运行

复制代码
import hashlib
import requests
import time

def vip_item_get(app_key, app_secret, num_iid):
    """官方商品详情接口"""
    api_url = "https://api.vip.com/router/rest"
    timestamp = str(int(time.time() * 1000))
    params = {
        "method": "vip.item.get",
        "app_key": app_key,
        "timestamp": timestamp,
        "format": "json",
        "num_iid": num_iid,
        "sign_method": "md5"
    }
    # 签名生成
    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
    sign = hashlib.md5(sign_str.encode()).hexdigest().upper()
    params["sign"] = sign

    resp = requests.get(api_url, params=params)
    return resp.json()

# 调用
# vip_item_get("你的AppKey", "你的AppSecret", "商品ID")

四、比价项目实战要点

1. 数据字段(核心)
  • 必采:商品ID名称现价原价折扣库存品牌分类活动
  • 可选:主图规格评论数好评率
2. 定时监控(价格预警)

python

运行

复制代码
import schedule
import time

def monitor_price(goods_id, target_price):
    info = get_vip_product_detail(goods_id)
    if info and float(info["现价"]) <= target_price:
        print(f"【降价提醒】{info['商品名称']} 现价{info['现价']},低于{target_price}")
        # 可加邮件/短信/企业微信推送

# 每30分钟监控一次
# schedule.every(30).minutes.do(monitor_price, "1710613157", 200)
# while True:
#     schedule.run_pending()
#     time.sleep(1)
3. 数据存储与对比
  • 存入:MySQL/PostgreSQL/CSV
  • 对比:历史价、跨平台价、折扣力度排序

五、常见问题与避坑

  1. 个人无法申请官方 API → 用第三方
  2. API 调用频率限制 → 控制 QPS,加重试 / 限流
  3. 数据延迟 → 选标注「实时」的 API
  4. 商品 ID 格式 → 唯品会 ID 多为纯数字(如1710613157
  5. 反爬风险绝对禁止爬虫,仅用合规 API
相关推荐
Aision_2 小时前
从工具调用到 MCP、Skill完整学习记录
java·python·gpt·学习·langchain·prompt·agi
kyriewen5 小时前
程序员连夜带团队跑路,省了23万:这AI太贵,真的用不起了
前端·javascript·openai
辞旧 lekkk6 小时前
【Qt】信号和槽
linux·开发语言·数据库·qt·学习·mysql·萌新
zc.z6 小时前
JAVA实现:纯PCM格式音频转换成BASE64
java·音视频·pcm
mask哥6 小时前
力扣算法java实现汇总整理(上)
java·算法·leetcode
2301_809204707 小时前
JavaScript中严格模式use-strict对引擎解析的辅助.txt
jvm·数据库·python
zjy277777 小时前
mysql如何选择合适的索引类型_mysql索引设计实战
jvm·数据库·python
Aaswk7 小时前
Java Lambda 表达式与流处理
java·开发语言·python
是宇写的啊7 小时前
Spring AOP
java·spring
笨蛋不要掉眼泪7 小时前
Mysql架构揭秘:update语句的执行流程
数据库·mysql·架构