在电商数据分析和竞品监控中,获取淘宝天猫平台的商品详情和销量数据是常见需求。通过官方开放的API接口,开发者可以高效地获取这些关键业务数据。欢迎工作室对接,低至2-3厘!!
- 竞品价格监控与分析
- 商品销量趋势预测
- 自动化运营报表生成
- 市场调研数据采集
首先需要在阿里开放平台申请API调用权限:
1. 注册阿里开发者账号
2. 创建应用获取App Key和App Secret
3. 申请商品API权限
```python
import requests
from hashlib import md5
import time
def get_auth_params(app_key, app_secret):
timestamp = str(int(time.time() * 1000))
sign_str = f'{app_secret}app_key{app_key}timestamp{timestamp}{app_secret}'
sign = md5(sign_str.encode('utf-8')).hexdigest().upper()
return {
'app_key': app_key,
'timestamp': timestamp,
'sign': sign
}
# 示例配置
app_key = 'YOUR_APP_KEY'
app_secret = 'YOUR_APP_SECRET'
auth_params = get_auth_params(app_key, app_secret)
```
- 接口地址:`https://api.taobao.com/router/rest`
- 请求方式:POST
- 必需参数:method, item_id
```python
def get_item_detail(item_id):
url = 'https://api.taobao.com/router/rest'
params = {
'method': 'taobao.item.get',
'item_id': item_id,
'fields': 'num_iid,title,price,desc,item_img,sku,props_name',
'format': 'json'
}
params.update(auth_params)
try:
response = requests.post(url, params=params)
result = response.json()
if 'error_response' in result:
print(f"Error: {result['error_response']['msg']}")
return None
return result['item_get_response']['item']
except Exception as e:
print(f"Request failed: {str(e)}")
return None
# 调用示例
item_id = '商品ID'
item_detail = get_item_detail(item_id)
if item_detail:
print(f"商品标题: {item_detail['title']}")
print(f"商品价格: {item_detail['price']}")
```
淘宝天猫的销量数据需要通过特定接口获取,注意以下限制:
- 需要高级权限
- 有调用频率限制
- 返回数据可能有延迟
```python
def get_item_sales(item_id):
url = 'https://api.taobao.com/router/rest'
params = {
'method': 'taobao.item.sales.get',
'item_id': item_id,
'fields': 'num_iid,sales,confirm_goods_count',
'format': 'json'
}
params.update(auth_params)
try:
response = requests.post(url, params=params)
result = response.json()
if 'error_response' in result:
print(f"Error: {result['error_response']['msg']}")
return None
return result['item_sales_get_response']['sales']
except Exception as e:
print(f"Request failed: {str(e)}")
return None
# 调用示例
sales_data = get_item_sales(item_id)
if sales_data:
print(f"30天销量: {sales_data['sales']}")
print(f"确认收货数: {sales_data['confirm_goods_count']}")
```
```python
def clean_item_data(raw_data):
cleaned = {
'item_id': raw_data.get('num_iid', ''),
'title': raw_data.get('title', '').strip(),
'price': float(raw_data.get('price', 0)),
'main_image': raw_data.get('item_img', [{}])[0].get('url', ''),
'sales': raw_data.get('sales', 0),
'update_time': int(time.time())
}
return cleaned
cleaned_data = clean_item_data(item_detail)
```
```python
import pymysql
def save_to_mysql(data, table_name='taobao_items'):
connection = pymysql.connect(
host='localhost',
user='your_username',
password='your_password',
database='ecommerce_data'
)
try:
with connection.cursor() as cursor:
sql = f"""
INSERT INTO {table_name}
(item_id, title, price, main_image, sales, update_time)
VALUES (%s, %s, %s, %s, %s, %s)
ON DUPLICATE KEY UPDATE
title=%s, price=%s, main_image=%s, sales=%s, update_time=%s
"""
cursor.execute(sql, (
data['item_id'], data['title'], data['price'],
data['main_image'], data['sales'], data['update_time'],
data['title'], data['price'], data['main_image'],
data['sales'], data['update_time']
))
connection.commit()
finally:
connection.close()
# 存储数据
save_to_mysql(cleaned_data)
```
- 问题:接口调用频率受限
- 解决方案:
- 使用队列控制请求频率
- 申请更高的调用配额
- 缓存常用数据
- 问题:某些字段返回为空
- 解决方案:
- 检查字段权限
- 使用备用接口获取
- 设置默认值处理
```python
# 签名验证函数
def verify_sign(params, app_secret):
sorted_params = sorted([(k, v) for k, v in params.items() if k != 'sign'])
param_str = ''.join([f'{k}{v}' for k, v in sorted_params])
sign_str = f'{app_secret}{param_str}{app_secret}'
calculated_sign = md5(sign_str.encode('utf-8')).hexdigest().upper()
return calculated_sign == params.get('sign', '')
```
通过本文介绍的API接口,开发者可以高效获取淘宝天猫平台的商品数据。在实际应用中建议:
1. 实现自动化调度系统定期采集数据
2. 建立完善的数据校验机制
3. 对敏感数据进行加密存储
4. 遵守平台的数据使用规则