京东商品详情API入门:Python快速实现商品信息抓取

你想通过 Python 快速实现京东商品详情 API 的调用,完成商品信息抓取,我会基于京东开放平台的合规 API(或新手友好的第三方 API),提供「零基础可落地、代码极简、步骤清晰」的入门方案,涵盖从 API 准备到数据解析的全流程,避开京东 API 的核心入门坑点。

一、核心前提(入门必看)

  1. API 选择
    • 新手推荐:第三方开放平台 API(如聚合数据、易源数据),无需企业资质,免费试用,上手快;
    • 合规进阶:京东开放平台 API(需企业资质、申请应用、签约接口),适合生产环境;
  2. 核心流程API密钥申请 → 构造请求参数 → 发送HTTP请求 → 解析JSON响应 → 提取商品数据
  3. 必备库requests(发送 HTTP 请求)、json(解析 JSON 数据),均为 Python 内置 / 主流库,新手易掌握。

二、前置准备

1. 安装依赖库

仅需安装requests(Python3.6 + 自带,若缺失则执行以下命令):

bash

运行

复制代码
pip install requests
2. 获取第三方京东商品详情 API 密钥

以「聚合数据」为例(新手首选,免费试用):

  1. 关注博主,搜索「京东商品详情」;
  2. 免费领取 API 接口,完成实名认证,获取AppKey(核心调用密钥);
  3. 查看接口文档,确认核心信息:
    • 请求地址:https://v.juhe.cn/jd/item/detail
    • 请求方式:GET;
    • 必填参数:key(AppKey)、sku_id(京东商品 ID,从商品 URL 提取,如https://item.jd.com/100060195820.html中的100060195820);
    • 响应格式:JSON,包含商品标题、价格、库存、销量等核心字段。

三、完整入门代码(可直接运行)

python

运行

复制代码
import requests
import json

# ===================== 配置信息(替换为你的信息) =====================
APP_KEY = "你的聚合数据AppKey"  # 替换为自己的AppKey
SKU_ID = "100060195820"        # 京东商品ID(可替换为任意商品ID)
API_URL = "https://v.juhe.cn/jd/item/detail"
# ====================================================================

def get_jd_item_detail():
    """抓取京东商品详情核心信息"""
    # 1. 构造请求参数
    params = {
        "key": APP_KEY,
        "sku_id": SKU_ID
    }
    
    # 2. 构造请求头(模拟浏览器,避免被拦截)
    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"
    }

    try:
        # 3. 发送GET请求(超时时间5秒,避免卡顿)
        response = requests.get(API_URL, params=params, headers=headers, timeout=5)
        
        # 4. 检查请求状态(200表示成功)
        if response.status_code == 200:
            # 5. 解析JSON响应
            result = response.json()
            
            # 6. 判断API调用是否成功(聚合数据:error_code=0为成功)
            if result["error_code"] == 0:
                # 7. 提取核心商品信息(逐层解析JSON)
                item_data = result["result"]
                detail = {
                    "商品ID": item_data["sku_id"],
                    "商品标题": item_data["title"],
                    "商品价格": f"{item_data['price']}元",
                    "库存状态": item_data["stock_state"],
                    "店铺名称": item_data["shop_name"],
                    "商品主图": item_data["pic_url"],
                    "销量": item_data.get("sales", "暂无数据")  # 部分商品无销量,用get避免KeyError
                }
                
                # 8. 打印结果(格式化输出,更清晰)
                print("=== 京东商品详情 ===")
                for key, value in detail.items():
                    print(f"{key}:{value}")
                
                # 可选:将数据保存为JSON文件
                with open("jd_item_detail.json", "w", encoding="utf-8") as f:
                    json.dump(detail, f, ensure_ascii=False, indent=4)
                print("\n商品数据已保存到 jd_item_detail.json 文件")
                
            else:
                print(f"API调用失败:{result['reason']},错误码:{result['error_code']}")
        else:
            print(f"HTTP请求失败,状态码:{response.status_code}")
    
    except requests.exceptions.Timeout:
        print("请求超时:京东API响应过慢,请稍后重试")
    except requests.exceptions.ConnectionError:
        print("网络错误:请检查网络连接或API地址是否正确")
    except KeyError as e:
        print(f"数据解析失败:缺失字段 {e},可能是商品ID无效或API返回格式变更")
    except Exception as e:
        print(f"未知错误:{str(e)}")

if __name__ == "__main__":
    get_jd_item_detail()

四、代码核心说明(新手友好)

1. 关键步骤拆解

表格

步骤 代码核心 作用
1 params构造参数 传入 AppKey 和商品 ID,是 API 调用的必备条件
2 headers设置 User-Agent 模拟浏览器请求,避免第三方 API 拦截(新手最易踩的坑)
3 requests.get()发送请求 超时时间设为 5 秒,避免程序无限等待
4 response.status_code 先判断 HTTP 请求是否成功,再解析数据
5 response.json() 将 JSON 字符串转为 Python 字典,方便提取数据
6 result["error_code"] 第三方 API 的通用成功标识,非 0 则直接提示失败原因
7 提取核心字段 仅保留新手最关心的标题、价格、库存等,避免复杂解析
8 异常捕获 覆盖超时、网络、字段缺失等常见异常,新手不会因小错误卡壳
2. 核心坑点规避
  • User-Agent 缺失:不设置请求头会被 API 拦截,返回「请求非法」,代码中已默认配置;
  • KeyError 异常 :部分商品无销量字段,用item_data.get("sales", "暂无数据")替代直接取值;
  • 商品 ID 无效:若提示「商品不存在」,检查 SKU_ID 是否从商品 URL 正确提取(京东商品 ID 为纯数字);
  • AppKey 错误:提示「APPKEY 不存在」时,核对聚合数据的 AppKey 是否复制正确(注意前后无空格)。

五、运行结果示例

plaintext

复制代码
=== 京东商品详情 ===
商品ID:100060195820
商品标题:京东京造 轻量便携保温杯 350ml 白色
商品价格:99.9元
库存状态:有货
店铺名称:京东京造官方旗舰店
商品主图:https://img10.360buyimg.com/n1/jfs/t1/21628/19/26077/44379/649a7f30F8040d770/xxx.jpg
销量:10万+

商品数据已保存到 jd_item_detail.json 文件

六、进阶扩展(新手可选)

1. 批量抓取多个商品

只需将 SKU_ID 改为列表,循环调用即可:

python

运行

复制代码
# 批量商品ID
sku_list = ["100060195820", "100080907904", "100095380451"]

for sku in sku_list:
    print(f"\n===== 开始抓取商品 {sku} =====")
    SKU_ID = sku  # 替换当前商品ID
    get_jd_item_detail()
2. 解析更多字段

若需要库存数量、发货地、商品规格等,可在detail字典中添加对应字段:

python

运行

复制代码
detail = {
    # 原有字段...
    "库存数量": item_data["stock_num"],
    "发货地": item_data["delivery_place"],
    "商品规格": item_data["spec_info"]
}

总结

  1. 核心逻辑:京东商品详情抓取的入门核心是「构造请求参数 → 发送请求 → 解析 JSON 核心字段」,代码仅 30 + 行即可完成;
  2. 关键配置 :必须设置User-Agent、核对AppKeySKU_ID,这是新手最易出错的 3 个点;
  3. 异常处理:覆盖超时、网络、字段缺失等异常,保证程序稳定运行;
  4. 扩展方向:批量抓取、解析更多字段、保存到 Excel,均可基于入门代码快速扩展。

这套方案完全适配新手,无需复杂的 API 签名、加密等操作,复制代码替换配置即可运行,是快速掌握京东商品详情 API 的最佳入门方式。

相关推荐
ZHOUPUYU2 小时前
PHP 8.3网关优化:我用JIT将QPS提升300%的真实踩坑录
开发语言·php
寻寻觅觅☆6 小时前
东华OJ-基础题-106-大整数相加(C++)
开发语言·c++·算法
YJlio6 小时前
1.7 通过 Sysinternals Live 在线运行工具:不下载也能用的“云端工具箱”
c语言·网络·python·数码相机·ios·django·iphone
l1t7 小时前
在wsl的python 3.14.3容器中使用databend包
开发语言·数据库·python·databend
赶路人儿7 小时前
Jsoniter(java版本)使用介绍
java·开发语言
ceclar1238 小时前
C++使用format
开发语言·c++·算法
山塘小鱼儿8 小时前
本地Ollama+Agent+LangGraph+LangSmith运行
python·langchain·ollama·langgraph·langsimth
码说AI8 小时前
python快速绘制走势图对比曲线
开发语言·python
Gofarlic_OMS8 小时前
科学计算领域MATLAB许可证管理工具对比推荐
运维·开发语言·算法·matlab·自动化