首页 > 大数据 > 数据分析 > 批量获取虾皮商品数据:开放API接口操作详解
注册开发者账号
访问虾皮开发者平台,使用企业或个人邮箱完成注册。需提交营业执照(企业开发者)或身份证明(个人开发者)完成实名认证。
创建应用并获取凭证
123456-ABCDE-7890-FGHIJ。用途:通过关键词批量获取商品列表,支持分页、排序、筛选。
核心参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
keyword |
String | 是 | 搜索关键词(如“手机”) |
limit |
Integer | 否 | 每页返回数量(默认20,最大100) |
page |
Integer | 否 | 页码(从1开始) |
sort_by |
String | 否 | 排序方式(如
price_asc按价格升序) |
示例请求:
bashGET https://api.shopee.com/api/v2/search_items?keyword=手机&limit=50&page=1&sort_by=price_ascAuthorization: Bearer YOUR_ACCESS_TOKEN
用途:获取单个商品的详细信息(如价格、库存、描述)。
核心参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
product_id |
Integer | 是 | 商品ID(从搜索接口获取) |
示例请求:
bashGET https://api.shopee.com/api/v2/product/get?product_id=123456789Authorization: Bearer YOUR_ACCESS_TOKEN
keyword=手机&limit=50),生成待签名字符串。pythonimport hmacimport hashlibimport base64def generate_signature(params, api_key):message = "&".join([f"{k}={v}" for k, v in sorted(params.items())])signature = hmac.new(api_key.encode(), message.encode(), hashlib.sha256).digest()return base64.b64encode(signature).decode()params = {"keyword": "手机", "limit": 50}signature = generate_signature(params, "YOUR_API_KEY")requests库发送GET请求,携带签名和授权头。pythonimport requestsdef search_items(keyword, limit=50, page=1):url = "https://api.shopee.com/api/v2/search_items"params = {"keyword": keyword,"limit": limit,"page": page,"timestamp": int(time.time())}headers = {"Authorization": f"Bearer YOUR_ACCESS_TOKEN","X-Shopee-Signature": generate_signature(params, "YOUR_API_KEY")}response = requests.get(url, params=params, headers=headers)return response.json()result = search_items("手机")print(result["items"][0]["name"]) # 输出第一个商品名称json模块解析API返回的JSON数据,提取关键字段(如商品ID、名称、价格)。pythonimport jsondata = '{"items": [{"product_id": 123, "name": "手机", "price": 1999}]}'parsed_data = json.loads(data)for item in parsed_data["items"]:print(f"商品ID: {item['product_id']}, 名称: {item['name']}, 价格: {item['price']}")pythonimport csvwith open("products.csv", "w", newline="", encoding="utf-8") as f:writer = csv.writer(f)writer.writerow(["商品ID", "名称", "价格"])for item in parsed_data["items"]:writer.writerow([item["product_id"], item["name"], item["price"]])pythondef get_hot_products(category_id, limit=10):params = {"category_id": category_id,"limit": limit,"sort_by": "sales"}response = search_items("", **params) # 假设search_items支持额外参数return [item["name"] for item in response["items"]]hot_phones = get_hot_products(100) # 获取手机类目热销商品pythondef compare_prices(product_name):shopee_data = search_items(product_name)shopee_price = shopee_data["items"][0]["price"]# 假设调用其他平台API获取价格other_platform_price = 1899 return {"shopee": shopee_price, "other_platform": other_platform_price}price_diff = compare_prices("iPhone 13")pythonimport redisr = redis.Redis(host="localhost", port=6379)def cached_search(keyword):cache_key = f"shopee_search:{keyword}"cached_data = r.get(cache_key)if cached_data:return json.loads(cached_data)data = search_items(keyword)r.setex(cache_key, 3600, json.dumps(data)) # 缓存1小时return datapythonimport timefrom requests.exceptions import RequestExceptiondef safe_api_call(url, params, headers, max_retries=3):for i in range(max_retries):try:response = requests.get(url, params=params, headers=headers)response.raise_for_status()return response.json()except RequestException as e:if i == max_retries - 1:raisetime.sleep(2 ** i) # 指数退避
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70046834/viewspace-3095599/ ,如需转载,请注明出处,否则将追究法律责任。