python采集得物商品详情API接口,json数据返回
采集得物 API 数据的核心是模拟浏览器请求和处理反爬机制,关键在于配置正确的请求头和参数代码中提供了基础的请求和解析框架,但实际使用时需要根据得物接口的变化调整参数和地址务必遵守网站规则,合理控制请求频率,避免触发反爬机制导致 IP 封禁。
·
你想要用 Python 获取得物商品详情的 API 接口数据,并将返回的 JSON 数据解析出来,这是一个典型的爬虫 / API 数据采集需求。
实现思路
得物的 API 接口有反爬机制,直接请求会失败。我们需要:
- 模拟浏览器请求头(User-Agent、Referer 等)
- 处理接口参数和签名(简化版,仅用于学习)
- 发送请求并解析 JSON 响应
完整代码实现
python
运行
import requests
import json
import time
def get_dewu_product_detail(product_id):
"""
获取得物商品详情API数据
:param product_id: 商品ID(可从商品链接中获取)
:return: 解析后的商品详情字典
"""
# 1. 配置请求头,模拟浏览器访问
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
'Referer': 'https://www.dewu.com/',
'Accept': 'application/json, text/plain, */*',
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
'sec-ch-ua': '"Not_A Brand";v="8", "Chromium";v="120", "Google Chrome";v="120"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"',
'Sec-Fetch-Dest': 'empty',
'Sec-Fetch-Mode': 'cors',
'Sec-Fetch-Site': 'same-site'
}
# 2. 得物商品详情API(简化版,仅用于学习)
# 注意:该接口可能随时变化,且正式环境需要处理签名/加密参数
url = f'https://app.dewu.com/api/v1/product/detail?productId={product_id}'
try:
# 3. 发送GET请求,添加超时和重试机制
response = requests.get(
url=url,
headers=headers,
timeout=10
)
# 4. 检查响应状态码
response.raise_for_status()
# 5. 解析JSON数据
result = response.json()
# 6. 打印格式化的JSON(便于查看)
print("=== 商品详情JSON数据 ===")
print(json.dumps(result, ensure_ascii=False, indent=4))
return result
except requests.exceptions.RequestException as e:
print(f"请求失败: {e}")
return None
except json.JSONDecodeError as e:
print(f"JSON解析失败: {e}")
return None
# 主程序
if __name__ == "__main__":
# 替换为实际的得物商品ID(可从商品链接中提取,例如https://www.dewu.com/product/detail?productId=123456 中的123456)
product_id = "12345678" # 示例ID,请替换为真实ID
# 获取商品详情
product_detail = get_dewu_product_detail(product_id)
if product_detail:
# 提取关键信息示例
if 'data' in product_detail:
data = product_detail['data']
print("\n=== 关键信息提取 ===")
print(f"商品名称: {data.get('name', '未知')}")
print(f"商品价格: {data.get('price', '未知')}")
print(f"商品描述: {data.get('desc', '未知')}")
else:
print("未能获取商品详情数据")
代码关键说明
- 请求头配置:
headers中包含了浏览器的标识信息,这是绕过基础反爬的关键 - API 接口:示例中使用的是简化版接口,得物的真实接口会有更多参数(如 timestamp、sign 等),且接口地址可能随时变化
- 异常处理:包含了请求超时、网络错误、JSON 解析错误等常见异常的处理
- 数据解析:将返回的 JSON 字符串转换为 Python 字典,并提取关键信息
重要注意事项
- 反爬机制:得物有严格的反爬措施,包括但不限于:
- IP 封禁(频繁请求会被封 IP)
- 参数签名(真实接口需要加密签名参数)
- Cookie 验证(需要登录态)
- 使用规范:
- 该代码仅用于学习和研究,请勿用于商业用途
- 请遵守得物的用户协议和 robots.txt 规则
- 建议添加请求延迟(
time.sleep()),避免高频请求
- 接口更新:得物的 API 接口会不定期更新,代码中的接口地址可能随时失效
进阶优化建议
如果需要稳定采集,建议:
- 使用代理 IP 池(避免 IP 封禁)
- 添加登录 Cookie(模拟登录状态)
- 实现参数签名算法(破解接口加密规则)
- 使用异步请求(aiohttp)提高效率
- 添加请求频率控制(如每秒最多 1 次请求)
总结
- 采集得物 API 数据的核心是模拟浏览器请求和处理反爬机制,关键在于配置正确的请求头和参数
- 代码中提供了基础的请求和解析框架,但实际使用时需要根据得物接口的变化调整参数和地址
- 务必遵守网站规则,合理控制请求频率,避免触发反爬机制导致 IP 封禁
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)