<noframes id="bhrfl"><address id="bhrfl"></address>

    <address id="bhrfl"></address>

    <noframes id="bhrfl"><address id="bhrfl"><th id="bhrfl"></th></address>

    <form id="bhrfl"><th id="bhrfl"><progress id="bhrfl"></progress></th></form>

    <em id="bhrfl"><span id="bhrfl"></span></em>

    全部
    常見問題
    產品動態
    精選推薦

    利用 PHP 爬蟲獲取商品詳情 API 返回值說明

    管理 管理 編輯 刪除

    在電商領域,獲取商品詳情信息是數據分析、價格監控、商品推薦等場景中的常見需求。通過調用商品詳情 API,可以高效地獲取商品的標題、價格、圖片、描述等詳細信息。本文將詳細介紹如何使用 PHP 爬蟲技術調用商品詳情 API,并對返回值進行詳細說明。

    一、準備工作

    1. 注冊 API 賬號

    要使用商品詳情 API,首先需要在相應的開放平臺注冊賬號,并創建應用以獲取 App KeyApp Secret。這些是調用 API 所必需的憑證。

    2. 安裝必要的 PHP 庫

    確保你的 PHP 環境中已經安裝了以下庫:

    • GuzzleHttp\Client:用于發送 HTTP 請求。
    • json:用于處理 JSON 數據。
    • 如果尚未安裝這些庫,可以通過以下命令進行安裝:

    bash


    composer require guzzlehttp/guzzle

    二、代碼實現

    以下是一個完整的 PHP 示例代碼,展示如何調用商品詳情 API,并處理返回的數據。

    1. 發送 HTTP 請求

    使用 GuzzleHttp\Client 發送請求,并獲取 API 返回的數據。

    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_product_detail($app_key, $app_secret, $sku_id) {
        $timestamp = date('Y-m-d H:i:s');
        $params = [
            'method' => 'item.get',  // 替換為實際的 API 方法名
            '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.example.com/routerjson', [
            'query' => $params,
        ]);
    
        if ($response->getStatusCode() == 200) {
            return json_decode($response->getBody(), true);
        } else {
            echo "請求失敗,狀態碼:" . $response->getStatusCode() . "\n";
            return null;
        }
    }

    2. 解析返回的 JSON 數據

    解析 API 返回的 JSON 數據,并提取商品的詳細信息。

    php


    function parse_response($data) {
        if ($data['code'] == '0') {
            $items = $data['item_detail_response']['items'];
            foreach ($items as $item) {
                echo "商品標題: " . $item['title'] . "\n";
                echo "商品價格: " . $item['price'] . "\n";
                echo "商品圖片: " . $item['pic_url'] . "\n";
                echo "商品描述: " . $item['description'] . "\n";
                echo "品牌: " . $item['brand'] . "\n";
                echo "分類: " . $item['category'] . "\n";
                echo "產地: " . $item['origin'] . "\n";
                echo "庫存數量: " . $item['stock_quantity'] . "\n";
                echo "銷量: " . $item['sales_volume'] . "\n";
                echo "用戶評分: " . $item['rating'] . "\n";
                echo "評論數量: " . $item['comment_count'] . "\n";
    
                if (isset($item['comments'])) {
                    echo "評論列表:\n";
                    foreach ($item['comments'] as $comment) {
                        echo "  用戶名: " . $comment['username'] . "\n";
                        echo "  評分: " . $comment['rating'] . "\n";
                        echo "  評論內容: " . $comment['comment'] . "\n";
                        echo "  評論時間: " . $comment['comment_time'] . "\n";
                    }
                }
    
                if (isset($item['props_list'])) {
                    echo "商品屬性:\n";
                    foreach ($item['props_list'] as $key => $value) {
                        echo "  $key: $value\n";
                    }
                }
    
                if (isset($item['sku_list'])) {
                    echo "SKU 列表:\n";
                    foreach ($item['sku_list'] as $sku) {
                        echo "  SKU ID: " . $sku['sku_id'] . "\n";
                        echo "  名稱: " . $sku['name'] . "\n";
                        echo "  價格: " . $sku['price'] . "\n";
                        echo "  庫存: " . $sku['stock'] . "\n";
                    }
                }
    
                if (isset($item['seller_info'])) {
                    echo "賣家信息:\n";
                    echo "  賣家 ID: " . $item['seller_info']['seller_id'] . "\n";
                    echo "  店鋪 ID: " . $item['seller_info']['shop_id'] . "\n";
                    echo "  店鋪名稱: " . $item['seller_info']['shop_name'] . "\n";
                }
    
                echo "商品詳情頁 URL: " . $item['detail_url'] . "\n";
            }
        } else {
            echo "API 請求失敗,錯誤信息: " . $data['errorMessage'] . "\n";
        }
    }

    3. 主程序

    在主程序中調用上述函數,獲取并展示商品的詳細信息。

    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_product_detail($app_key, $app_secret, $sku_id) {
        $timestamp = date('Y-m-d H:i:s');
        $params = [
            'method' => 'item.get',  // 替換為實際的 API 方法名
            '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.example.com/routerjson', [
            'query' => $params,
        ]);
    
        if ($response->getStatusCode() == 200) {
            return json_decode($response->getBody(), true);
        } else {
            echo "請求失敗,狀態碼:" . $response->getStatusCode() . "\n";
            return null;
        }
    }
    
    function parse_response($data) {
        if ($data['code'] == '0') {
            $items = $data['item_detail_response']['items'];
            foreach ($items as $item) {
                echo "商品標題: " . $item['title'] . "\n";
                echo "商品價格: " . $item['price'] . "\n";
                echo "商品圖片: " . $item['pic_url'] . "\n";
                echo "商品描述: " . $item['description'] . "\n";
                echo "品牌: " . $item['brand'] . "\n";
                echo "分類: " . $item['category'] . "\n";
                echo "產地: " . $item['origin'] . "\n";
                echo "庫存數量: " . $item['stock_quantity'] . "\n";
                echo "銷量: " . $item['sales_volume'] . "\n";
                echo "用戶評分: " . $item['rating'] . "\n";
                echo "評論數量: " . $item['comment_count'] . "\n";
    
                if (isset($item['comments'])) {
                    echo "評論列表:\n";
                    foreach ($item['comments'] as $comment) {
                        echo "  用戶名: " . $comment['username'] . "\n";
                        echo "  評分: " . $comment['rating'] . "\n";
                        echo "  評論內容: " . $comment['comment'] . "\n";
                        echo "  評論時間: " . $comment['comment_time'] . "\n";
                    }
                }
    
                if (isset($item['props_list'])) {
                    echo "商品屬性:\n";
                    foreach ($item['props_list'] as $key => $value) {
                        echo "  $key: $value\n";
                    }
                }
    
                if (isset($item['sku_list'])) {
                    echo "SKU 列表:\n";
                    foreach ($item['sku_list'] as $sku) {
                        echo "  SKU ID: " . $sku['sku_id'] . "\n";
                        echo "  名稱: " . $sku['name'] . "\n";
                        echo "  價格: " . $sku['price'] . "\n";
                        echo "  庫存: " . $sku['stock'] . "\n";
                    }
                }
    
                if (isset($item['seller_info'])) {
                    echo "賣家信息:\n";
                    echo "  賣家 ID: " . $item['seller_info']['seller_id'] . "\n";
                    echo "  店鋪 ID: " . $item['seller_info']['shop_id'] . "\n";
                    echo "  店鋪名稱: " . $item['seller_info']['shop_name'] . "\n";
                }
    
                echo "商品詳情頁 URL: " . $item['detail_url'] . "\n";
            }
        } else {
            echo "API 請求失敗,錯誤信息: " . $data['errorMessage'] . "\n";
        }
    }
    
    if (__FILE__ == __FILE__) {
        $app_key = 'your_app_key';  // 替換為你的 App Key
        $app_secret = 'your_app_secret';  // 替換為你的 App Secret
        $sku_id = '123456';  // 替換為商品的 SKU ID
    
        $response_data = get_product_detail($app_key, $app_secret, $sku_id);
        if ($response_data) {
            parse_response($response_data);
        }
    }
    ?>

    三、API 返回值說明

    商品詳情 API 的返回值是一個 JSON 對象,其結構如下:

    返回值示例

    JSON


    {
        "code": "0",
        "errorMessage": "success",
        "item_detail_response": {
            "items": [
                {
                    "sku_id": "1234567890",
                    "title": "商品標題",
                    "price": "120.00",
                    "original_price": "150.00",
                    "discount_price": "100.00",
                    "pic_url": "https://example.com/image.jpg",
                    "description": "商品詳細描述",
                    "brand": "品牌名稱",
                    "category": "分類名稱",
                    "origin": "產地",
                    "stock_quantity": 100,
                    "sales_volume": 500,
                    "rating": 4.5,
                    "comment_count": 200,
                    "comments": [
                        {
                            "user_id": "user123",
                            "username": "用戶名",
                            "rating": 5,
                            "comment": "好評內容",
                            "comment_time": "2024-10-10T12:00:00Z"
                        }
                    ],
                    "props_list": {
                        "color": "紅色",
                        "size": "L"
                    },
                    "sku_list": [
                        {
                            "sku_id": "123456",
                            "name": "紅色",
                            "price": "120.00",
                            "stock": 50
                        }
                    ],
                    "seller_info": {
                        "seller_id": "seller123",
                        "shop_id": "shop456",
                        "shop_name": "店鋪名稱"
                    },
                    "detail_url": "https://item.example.com/1234567890.html"
                }
            ]
        }
    }

    返回值字段說明

    • code:返回的狀態碼,表示請求的結果。0 表示成功,其他值表示失敗。
    • errorMessage:錯誤信息,描述了返回狀態碼對應的錯誤原因。
    • item_detail_response:商品詳情信息的響應數據。items:商品列表,包含多個商品的詳細信息。sku_id:商品的唯一標識 ID。title:商品標題。price:商品當前價格。original_price:商品原價(如果有)。discount_price:商品折扣價(如果有)。pic_url:商品圖片的 URL。description:商品詳細描述。brand:商品品牌。category:商品分類。origin:商品產地。stock_quantity:當前庫存數量。sales_volume:銷量。rating:用戶評分。comment_count:評論數量。comments:評論內容列表。user_id:用戶 ID。username:用戶名。rating:用戶評分。comment:評論內容。comment_time:評論時間。props_list:商品屬性列表,如尺碼、顏色等。sku_list:商品的 SKU 列表,每個 SKU 代表一個具體的商品規格和價格組合。sku_id:SKU 的 ID。name:SKU 的名稱。price:SKU 的價格。stock:SKU 的庫存數量。seller_info:賣家信息。seller_id:賣家 ID。shop_id:店鋪 ID。shop_name:店鋪名稱。detail_url:商品詳情頁 URL。

    四、注意事項

    1. API 使用限制

    API 提供商可能對請求頻率和數據量有限制。建議在實際使用中合理安排請求間隔,避免被封禁。

    2. 數據隱私

    確保遵守 API 提供商的使用條款,不要濫用數據。

    3. 異常處理

    在請求過程中可能會遇到網絡問題、API 限制或其他錯誤。建議使用 try-catch 語句捕獲異常,并合理處理。

    4. 簽名生成

    根據 API 文檔,生成簽名是調用 API 的必要步驟。確保正確實現簽名生成邏輯。

    五、總結

    通過上述步驟和代碼,你可以使用 PHP 爬蟲技術獲取商品的詳細信息,并解析返回的 JSON 數據。希望這個示例對你有所幫助!


    請登錄后查看

    one-Jason 最后編輯于2025-04-15 13:58:21

    快捷回復
    回復
    回復
    回復({{post_count}}) {{!is_user ? '我的回復' :'全部回復'}}
    排序 默認正序 回復倒序 點贊倒序

    {{item.user_info.nickname ? item.user_info.nickname : item.user_name}} LV.{{ item.user_info.bbs_level }}

    作者 管理員 企業

    {{item.floor}}# 同步到gitee 已同步到gitee {{item.is_suggest == 1? '取消推薦': '推薦'}}
    {{item.is_suggest == 1? '取消推薦': '推薦'}}
    沙發 板凳 地板 {{item.floor}}#
    {{item.user_info.title || '暫無簡介'}}
    附件

    {{itemf.name}}

    {{item.created_at}}  {{item.ip_address}}
    打賞
    已打賞¥{{item.reward_price}}
    {{item.like_count}}
    {{item.showReply ? '取消回復' : '回復'}}
    刪除
    回復
    回復

    {{itemc.user_info.nickname}}

    {{itemc.user_name}}

    回復 {{itemc.comment_user_info.nickname}}

    附件

    {{itemf.name}}

    {{itemc.created_at}}
    打賞
    已打賞¥{{itemc.reward_price}}
    {{itemc.like_count}}
    {{itemc.showReply ? '取消回復' : '回復'}}
    刪除
    回復
    回復
    查看更多
    打賞
    已打賞¥{{reward_price}}
    413
    {{like_count}}
    {{collect_count}}
    添加回復 ({{post_count}})

    相關推薦

    快速安全登錄

    使用微信掃碼登錄
    {{item.label}} 加精
    {{item.label}} {{item.label}} 板塊推薦 常見問題 產品動態 精選推薦 首頁頭條 首頁動態 首頁推薦
    取 消 確 定
    回復
    回復
    問題:
    問題自動獲取的帖子內容,不準確時需要手動修改. [獲取答案]
    答案:
    提交
    bug 需求 取 消 確 定
    打賞金額
    當前余額:¥{{rewardUserInfo.reward_price}}
    {{item.price}}元
    請輸入 0.1-{{reward_max_price}} 范圍內的數值
    打賞成功
    ¥{{price}}
    完成 確認打賞

    微信登錄/注冊

    切換手機號登錄

    {{ bind_phone ? '綁定手機' : '手機登錄'}}

    {{codeText}}
    切換微信登錄/注冊
    暫不綁定
    亚洲欧美字幕
    CRMEB客服

    CRMEB咨詢熱線 咨詢熱線

    400-8888-794

    微信掃碼咨詢

    CRMEB開源商城下載 源碼下載 CRMEB幫助文檔 幫助文檔
    返回頂部 返回頂部
    CRMEB客服