针对京东商品好评数与好评率的数据采集,需根据其页面特性及反爬机制设计技术方案。以下是具体实现方式和注意事项:
一、数据定位与采集方式
1. 页面DOM解析(适用于静态页面)
京东商品详情页中,好评数和好评率通常展示在以下位置:
- **HTML标签定位**:
```html
<!-- 好评数示例 -->
<div class="comment-count">
好评数<span>100万+</span>
</div>
<!-- 好评率示例 -->
<div class="percent-con">好评率<span>98%</span></div>
```
- **解析方法**:
- 使用XPath或CSS选择器提取文本:
```python
# 好评数(示例)
good_comment_num = response.xpath('//div[@class="comment-count"]/a/span/text()').get()
# 好评率(示例)
good_comment_rate = response.xpath('//div[@class="percent-con"]/span/text()').get()
```
2. 动态接口抓取(推荐方案)
京东部分数据通过异步接口加载,需捕获以下API:
- **商品评价概览接口**:
```
https://club.jd.com/comment/productCommentSummaries.action?referenceIds=商品ID
```
- **参数说明**:
- `referenceIds`: 商品ID(如`100000000001`)
- **返回数据示例**:
```json
{
"CommentsCount": [{
"GoodCount": "100000", // 好评数
"GoodRate": "0.98", // 好评率(需转换为百分比)
"SkuId": "100000000001"
}]
}
```
二、反爬应对策略
京东对高频访问和数据爬取有严格限制,需采取以下措施:
1. **请求头伪装**:
- 添加完整Headers,包括`User-Agent`、`Referer`、`Cookie`:
```python
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36...",
"Referer": "https://item.jd.com/商品ID.html"
}
```
2. **IP代理池轮换**:
- 使用付费代理服务(如Luminati、Oxylabs)或自建代理池,避免单一IP被封禁。
3. **请求频率控制**:
- 设置随机延时(如3-10秒/请求),避免触发风控:
```python
import time
import random
time.sleep(random.uniform(3, 10))
```
4. **签名验证破解**:
- 京东部分接口需要动态签名(如`_t`、`sign`参数),需逆向JS生成逻辑(参考`main.min.js`中的加密函数)。
三、合规性与替代方案
1. 京东开放平台API(官方合规渠道)
- 通过[京东宙斯API](https://open.jd.com)申请`商品评价接口`权限:
- **接口路径**:`/api/product/getCommentSummary`
- **优势**:数据稳定、无需处理反爬,支持批量查询。
- **限制**:需企业资质审核,调用量受配额限制。
2. 第三方数据服务商合作
第三方电商数据采集API接口
四、数据处理建议
1. **数据清洗**:
- 转换好评率格式(如`0.98`→`98%`);
- 处理异常值(如“100万+”需转换为`1000000`)。
2. **存储优化**:
```sql
CREATE TABLE jd_product_comments (
sku_id BIGINT PRIMARY KEY,
good_count INT,
good_rate DECIMAL(4,2),
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
```
---
五、风险提示
1. **法律风险**:
- 未经授权爬取数据可能违反《数据安全法》及京东用户协议,建议优先使用官方API。
2. **技术风险**:
- 京东页面结构及接口可能频繁变动,需定期维护采集脚本。
---
总结
- **高效方案**:优先接入京东官方API,稳定合规;
- **技术方案**:若需自行采集,需结合动态接口抓取+反爬策略,并注意法律边界;
- **扩展性**:可封装为标准化API接口,提供“商品ID→好评数据”的一键查询服务。