唯品会数据采集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
相关推荐
回到原点的码农2 小时前
maven导入spring框架
数据库·spring·maven
人机与认知实验室2 小时前
Maven与以色列福音系统有何区别?
java·maven
wuqingshun3141592 小时前
spring如何解决循环依赖问题的?
java
zero15972 小时前
Python 8天极速入门笔记(大模型工程师专用):第三篇-列表与字典(Python核心数据结构,大模型必备)
开发语言·python·ai编程
书到用时方恨少!2 小时前
Python 零基础入门系列(十一):模块和包
开发语言·python
阿kun要赚马内2 小时前
Python面向对象编程:封装性
开发语言·python
Yao.Li2 小时前
PVN3D TensorRT 环境配置指南
人工智能·python·具身智能
zzwq.2 小时前
Python面向对象编程(OOP)基础详解
python