一、核心返回字段解析
1. 基础信息字段
- 商品ID(
num_iid
/goods_id
)
唯一标识商品,用于后续操作(如详情查询、库存更新)。
- 标题(
title
)
商品名称,需注意可能包含营销关键词(如"【限时折扣】2025新款手机")。
- 价格信息
price
:当前售价(如¥999.99)
original_price
:原价(促销前价格)
zk_final_price
:天猫/淘宝活动价(需结合促销字段判断)
- 销量(
sales
)
累计销量,部分平台提供近30天销量(如拼多多sales_volume
)。
- 商品链接(
detail_url
)
跳转至商品详情页的URL,需注意域名可能为item.taobao.com
或item.jd.com
。
2. 多媒体与描述
- 主图URL(
pic_url
/imageUrl
)
通常为800x800像素以上高清图,支持多张(如京东pictures
数组)。
- 详情描述(
description
)
HTML格式内容,包含图文详情、参数表等,需用正则表达式或解析库提取关键信息。
- SKU信息
- 颜色/尺码(
props
数组,如["颜色:红色", "尺码:M"]
)
- SKU价格与库存(如
skus
数组,含price
、stock
字段)
3. 状态与评价
- 好评率(
positive_rate
)
百分比形式(如98%),反映用户满意度。
- 评价总数(
comments_count
)
需注意部分平台(如拼多多)需单独调用评价API获取详细内容。
- 促销活动(
coupon_info
)
包含满减、折扣券等,如{"type":"满减","value":"满100减20"}
。
4. 物流与售后
- 发货地(
location
)
如"浙江省杭州市",影响运费计算。
- 邮费(
post_fee
)
部分平台返回"包邮"或具体金额(如¥10)。
- 售后服务(
service_list
)
如"七天无理由退换"、"全国联保"等。
二、数据格式与解析方法
1. JSON结构示例(淘宝API)
json
{ |
"items": [ |
{ |
"num_iid": "123456789", |
"title": "2025新款智能手机", |
"price": 2999.00, |
"sales": 5000, |
"pic_url": "https://img.alicdn.com/bao/xxx.jpg", |
"props": ["颜色:黑色", "存储:128GB"], |
"sku": [ |
{"price": 2999.00, "stock": 100, "external_id": "SKU001"} |
] |
} |
], |
"total_results": 100, |
"pagination": { |
"current_page": 1, |
"page_size": 20, |
"total_pages": 5 |
} |
} |
2. PHP解析代码示例
php
// 解析JSON数据 |
$jsonData = file_get_contents('api_response.json'); |
$data = json_decode($jsonData, true); |
|
// 遍历商品列表 |
foreach ($data['items'] as $item) { |
echo "商品ID: " . $item['num_iid'] . "\n"; |
echo "标题: " . $item['title'] . "\n"; |
echo "价格: ¥" . $item['price'] . "\n"; |
echo "销量: " . $item['sales'] . "件\n"; |
|
// 解析SKU信息 |
if (!empty($item['sku'])) { |
foreach ($item['sku'] as $sku) { |
echo "SKU: " . $sku['external_id'] . ", 价格: ¥" . $sku['price'] . ", 库存: " . $sku['stock'] . "\n"; |
} |
} |
} |
|
// 处理分页信息 |
$totalPages = $data['pagination']['total_pages']; |
echo "总页数: " . $totalPages; |
三、分页处理与性能优化
1. 分页参数设置
- 淘宝/京东:
page=1&page_size=20
(每页20条,最大支持100条)
- 拼多多:
page=1&limit=20
(类似逻辑)
2. 循环分页请求示例(PHP)
php
for ($page = 1; $page <= $totalPages; $page++) { |
$url = "https://api.example.com/item_search?q=手机&page=$page&page_size=20"; |
$response = file_get_contents($url); |
$data = json_decode($response, true); |
|
// 解析并存储数据 |
foreach ($data['items'] as $item) { |
// 插入数据库或缓存 |
} |
|
// 避免频繁请求,添加延迟 |
sleep(1); |
} |
3. 性能优化策略
- 缓存静态数据:
使用Redis缓存商品分类、基础属性等不变数据,减少API调用。
- 异步加载:
结合Ajax实现分页数据异步加载,提升前端体验。
- 并发请求:
使用多线程或异步库(如Guzzle)同时请求多页数据(需遵守平台限流规则)。
四、错误处理与调试
1. 常见错误码与解决方案
平台 |
错误码 |
含义 |
解决方案 |
淘宝 |
10000 |
参数错误 |
检查请求参数格式,如page 是否为整数 |
京东 |
20001 |
订单状态不正确 |
确认商品是否下架或活动已结束 |
拼多多 |
21517 |
创建订单服务端错误 |
重试请求,或联系平台技术支持 |
通用 |
11001 |
访问未授权 |
检查App Key/Secret是否正确 |
2. 调试技巧
- 打印完整请求:
php
echo "请求URL: " . $url . "\n参数: " . json_encode($params); |
- 模拟请求工具:
使用Postman或curl命令验证接口连通性:
bash
curl -X GET "https://api.taobao.com/router/rest?method=taobao.item_search&q=手机&page=1&page_size=20" |
- 错误日志记录:
将错误码、错误信息及请求时间写入日志文件,便于分析:
php
file_put_contents('error.log', date('Y-m-d H:i:s') . " - 错误码: " . $error_code . " - 错误信息: " . $error_message . "\n", FILE_APPEND); |
五、平台差异对比
平台 |
特色字段 |
分页参数 |
错误码体系 |
淘宝 |
zk_final_price (活动价) |
page /page_size |
10000-19999(参数类错误) |
京东 |
详细规格参数(如product_params ) |
page /pageSize |
20000-29999(业务类错误) |
拼多多 |
sales_volume (近30天销量) |
page /limit |
21000-21999(权限类错误) |
六、扩展建议
- 数据清洗:
使用正则表达式去除HTML标签(如<p>
、<img>
),提取纯文本描述。
- 数据存储:
将解析后的数据存入MySQL数据库,表结构示例:
sql
CREATE TABLE goods ( |
id INT AUTO_INCREMENT PRIMARY KEY, |
goods_id VARCHAR(20) UNIQUE, |
title VARCHAR(255), |
price DECIMAL(10,2), |
sales INT, |
pic_url VARCHAR(512), |
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP |
); |
- 合规性:
遵守平台规则,避免频繁请求(如淘宝限流1次/秒),使用官方SDK(如top/api
库)提高稳定性。
通过以上方法,可系统化解析电商开放平台的商品数据,构建高效的数据处理流程。