利用 PHP 爬虫获取京东商品详情 API 返回值说明及代码示例

在电商领域,京东作为国内知名的电商平台,提供了丰富的商品信息。通过调用京东商品详情 API,我们可以获取商品的详细信息,如商品标题、价格、图片、描述等。这些信息对于数据分析、价格监控、商品推荐等场景具有重要价值。本文将详细介绍如何使用 PHP 爬虫技术调用京东商品详情 API,并对返回值进行详细说明。

一、准备工作

1. 注册京东开放平台账号

要使用京东商品详情 API,首先需要在京东开放平台(https://open.jd.com/)注册账号,并创建应用以获取 App KeyApp Secret。这些是调用 API 所必需的凭证。

2. 安装必要的 PHP 库

确保你的 PHP 环境中已经安装了以下库:

  • cURL:用于发送 HTTP 请求。

  • json:用于处理 JSON 数据。

如果尚未安装这些库,可以通过以下命令进行安装:

bash

bash 复制代码
composer require guzzlehttp/guzzle

二、代码实现

以下是一个完整的 PHP 示例代码,展示如何调用京东商品详情 API,并处理返回的数据。

1. 发送 HTTP 请求

使用 cURLGuzzleHttp\Client 发送请求,并获取 API 返回的数据。

php

php 复制代码
<?php
require 'vendor/autoload.php';
use GuzzleHttp\Client;

function generate_signature($app_key, $app_secret, $timestamp, $params) {
    ksort($params);
    $sign_str = $app_key . $timestamp . $app_secret;
    foreach ($params as $key => $value) {
        $sign_str .= $key . $value;
    }
    return md5($sign_str);
}

function get_jd_product_detail($app_key, $app_secret, $sku_id) {
    $timestamp = date('Y-m-d H:i:s');
    $params = [
        'method' => 'jd.item.get',
        'app_key' => $app_key,
        'timestamp' => $timestamp,
        'v' => '2.0',
        'sku' => $sku_id,
        'sign_method' => 'md5',
    ];
    $params['sign'] = generate_signature($app_key, $app_secret, $timestamp, $params);

    $client = new Client();
    $response = $client->request('GET', 'https://api.jd.com/routerjson', [
        'query' => $params,
    ]);

    return json_decode($response->getBody(), true);
}

function parse_response($data) {
    if ($data['code'] == '0') {
        $items = $data['jingdong_item_detail_response']['items'];
        foreach ($items as $item) {
            $num_iid = $item['num_iid'];
            $title = $item['title'];
            $detail_url = $item['detail_url'];
            $pic_url = $item['pic_url'];
            $price = $item['price'];
            $description = $item['description'];

            echo "商品 ID: $num_iid\n";
            echo "商品标题: $title\n";
            echo "商品详情页 URL: $detail_url\n";
            echo "商品图片 URL: $pic_url\n";
            echo "商品价格: $price\n";
            echo "商品描述: $description\n";
        }
    } else {
        echo "API 请求失败,错误信息: " . $data['errorMessage'] . "\n";
    }
}

$app_key = 'your_app_key';  // 替换为你的 App Key
$app_secret = 'your_app_secret';  // 替换为你的 App Secret
$sku_id = '123456';  // 替换为商品的 SKU ID

$response_data = get_jd_product_detail($app_key, $app_secret, $sku_id);
if ($response_data) {
    parse_response($response_data);
}
?>

2. 解析返回的 JSON 数据

解析 API 返回的 JSON 数据,并提取商品的详细信息。

php

php 复制代码
function parse_response($data) {
    if ($data['code'] == '0') {
        $items = $data['jingdong_item_detail_response']['items'];
        foreach ($items as $item) {
            $num_iid = $item['num_iid'];
            $title = $item['title'];
            $detail_url = $item['detail_url'];
            $pic_url = $item['pic_url'];
            $price = $item['price'];
            $description = $item['description'];

            echo "商品 ID: $num_iid\n";
            echo "商品标题: $title\n";
            echo "商品详情页 URL: $detail_url\n";
            echo "商品图片 URL: $pic_url\n";
            echo "商品价格: $price\n";
            echo "商品描述: $description\n";
        }
    } else {
        echo "API 请求失败,错误信息: " . $data['errorMessage'] . "\n";
    }
}

三、API 返回值说明

京东商品详情 API 的返回值是一个 JSON 对象,其结构如下:

返回值示例

JSON

java 复制代码
{
    "code": "0",
    "errorMessage": "success",
    "jingdong_item_detail_response": {
        "items": [
            {
                "num_iid": "1234567890",
                "title": "商品标题",
                "detail_url": "https://item.jd.com/1234567890.html",
                "pic_url": "https://img10.360buyimg.com/n1/s200x200_jfs/t1/123456/1/1234567890.jpg",
                "price": "120.00",
                "description": "商品详细描述"
            }
        ]
    }
}

返回值字段说明

  • code :返回的状态码,表示请求的结果。0 表示成功,其他值表示失败。

  • errorMessage:错误信息,描述了返回状态码对应的错误原因。

  • jingdong_item_detail_response:商品详情信息的响应数据。

    • items:商品列表,包含多个商品的详细信息。

      • num_iid:商品的唯一标识 ID。

      • title:商品标题。

      • detail_url:商品详情页的 URL。

      • pic_url:商品图片的 URL。

      • price:商品当前价格。

      • description:商品详细描述。

四、注意事项

1. API 使用限制

京东 API 可能对请求频率和数据量有限制。建议在实际使用中合理安排请求间隔,避免被封禁。

2. 数据隐私

确保遵守京东开放平台的使用条款,不要滥用数据。

3. 异常处理

在请求过程中可能会遇到网络问题、API 限制或其他错误。建议使用 try-catch 语句捕获异常,并合理处理。

4. 签名生成

根据京东 API 文档,生成签名是调用 API 的必要步骤。确保正确实现签名生成逻辑。

五、总结

通过上述步骤和代码,你可以使用 PHP 爬虫技术获取京东商品的详细信息,并解析返回的 JSON 数据。希望这个示例对你有所帮助!

相关推荐
网硕互联的小客服37 分钟前
Apache 如何支持SHTML(SSI)的配置方法
运维·服务器·网络·windows·php
苏琢玉1 小时前
如何让同事自己查数据?写一个零依赖 PHP SQL 查询工具就够了
mysql·php
一条上岸小咸鱼3 小时前
Kotlin 基本数据类型(一):Numbers
android·前端·kotlin
Huntto3 小时前
最小二乘法计算触摸事件速度
android·最小二乘法·触摸事件·速度估计
一笑的小酒馆3 小时前
Android中使用Compose实现各种样式Dialog
android
红橙Darren4 小时前
手写操作系统 - 编译链接与运行
android·ios·客户端
全栈软件开发6 小时前
PHP域名授权系统网站源码_授权管理工单系统_精美UI_附教程
开发语言·ui·php·php域名授权·授权系统网站源码
mit6.8247 小时前
ubuntu远程桌面很卡怎么解决?
linux·ubuntu·php
鹏多多.7 小时前
flutter-使用device_info_plus获取手机设备信息完整指南
android·前端·flutter·ios·数据分析·前端框架
麦麦大数据8 小时前
F004 新闻可视化系统爬虫更新数据+ flask + mysql架构
爬虫·mysql·flask·可视化·新闻