Integración de API para la Extracción de Reseñas y Preguntas de Productos en Taobao

Para obtener datos detallados sobre las interacciones de los compradores en Taobao, es posible utilizar endpoints específicos que devuelvne tanto las reseñas de los productos como la sección de preguntas y respuestas. A continuación, se detalla la implementación para consultar el historial de preguntas y repsuestas (item_question_answer) y las reseñas generales (item_review).

Ejemplo de Solicitud HTTP

El siguiente fragmento de código en PHP demuestra cómo realizar una petición GET utilizando cURL. Se ha optimizado la estructura para incluir un manejo básico de errores y una configuración más limpia de las opciones del cliente.

<?php
function fetchTaobaoQAData(string $itemId, int $page = 1): array {
    $baseUrl = "https://api.example.com/taobao/item_question_answer/";
    $queryParams = http_build_query([
        'key' => 'YOUR_API_KEY',
        'secret' => 'YOUR_API_SECRET',
        'num_iid' => $itemId,
        'page' => $page
    ]);
    
    $fullUrl = $baseUrl . '?' . $queryParams;
    
    $ch = curl_init();
    curl_setopt_array($ch, [
        CURLOPT_URL => $fullUrl,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_SSL_VERIFYPEER => false,
        CURLOPT_SSL_VERIFYHOST => false,
        CURLOPT_HTTPHEADER => ['Accept-Encoding: gzip'],
        CURLOPT_ENCODING => 'gzip',
        CURLOPT_TIMEOUT => 30
    ]);
    
    $response = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    
    if (curl_errno($ch)) {
        throw new Exception('cURL Error: ' . curl_error($ch));
    }
    
    curl_close($ch);
    
    if ($httpCode !== 200) {
        throw new Exception("API request failed with status code: $httpCode");
    }
    
    return json_decode($response, true) ?: [];
}

// Uso del método
try {
    $data = fetchTaobaoQAData('632521829807', 1);
    print_r($data);
} catch (Exception $e) {
    echo $e->getMessage();
}
?>

Estructura de la Respuesta

La API devuelve un objeto JSON que contiene la información del producto y un arreglo con las preguntas realizadas por los usuarios, junto con sus respectivas respuestas.

Parámetro Tipo Descripción
num_iid BigInt Identificador único del producto.
title String Título o nombre del artículo.
pic_url String URL de la imagen principal del producto.
total_question Int Cantidad total de preguntas registradas.
page_size Int Número de elementos por página.
item_question Array Lista de objetos que representan cada pregunta.
id String Identificador de la pregunta.
question_title String Texto de la pregunta formulada.
detail_url String Enlace directo a la página de detalles de la pregunta.
total_answer String Número total de respuestas para esa pregunta.
creat_time String Fecha de creación de la pregunta.
answer_info Object Objeto que contiene los detalles de la respuesta principal.

Adicionalmente, para el endpoint de reseñas (item_review), la respuesta incluye metadatos como el texto del comentario, fecha de publicación, imágenes adjuntas, apodo del comprador, atributos del producto comprado, comentarios adicionales y enlaces a videos.

Ejemplo de Payload JSON

A continuación se muestra un ejemplo de la estructura de datos devuelta por la API:

{
    "num_iid": "774920183654",
    "title": "Cuchillo plegable multifuncional de titanio con clip para bolsillo",
    "pic_url": "https://img.alicdn.com/bao/uploaded/i1/123456789/O1CN01abc123_!!123456789.jpg",
    "total_question": "24",
    "page_size": 5,
    "item_question": [
        {
            "id": "384756291048",
            "question_title": "¿El mecanismo de bloqueo es fiable para uso diario?",
            "detail_url": "https://market.m.taobao.com/app/mtb/questions-and-answers/pages/detail/index.html?id=384756291048",
            "total_answer": "3",
            "creat_time": "2023-05-12",
            "answer_info": {
                "id": "384756291049",
                "answer_title": "Sí, el liner lock es muy sólido y no tiene juego lateral.",
                "answer_time": "2023-05-13",
                "nick": "Usuario***88",
                "user_logo": "https://wwc.alicdn.com/avatar/getAvatar.do?userIdStr=XYZ123ABC"
            }
        },
        {
            "id": "384756291050",
            "question_title": "¿Se puede llevar en el equipaje de mano del avión?",
            "detail_url": "https://market.m.taobao.com/app/mtb/questions-and-answers/pages/detail/index.html?id=384756291050",
            "total_answer": "5",
            "creat_time": "2023-06-01",
            "answer_info": {
                "id": "384756291051",
                "answer_title": "No, los controles de seguridad aeroportuaria lo confiscarán sin duda.",
                "answer_time": "2023-06-02",
                "nick": "Viajero***99",
                "user_logo": "https://wwc.alicdn.com/avatar/getAvatar.do?userIdStr=DEF456GHI"
            }
        }
    ]
}

Etiquetas: taobao-api php-curl web-scraping e-commerce-api json-parsing

Publicado el 8-11 05:02