Loading Light/Dark Toggle
Crea un scraper de productos de WooCommerce con Playwright

Cómo crear un scraper de productos de WooCommerce con Playwright

Scrapeless Agent Browser ejecuta automatización de Playwright para escaparates de WooCommerce, y Scrapeless Residential Proxies admite enrutamiento de red específico por mercado cuando los precios de la tienda varían según la ubicación.

TL;DR

  • Las colecciones y las páginas de producto de WooCommerce responden a preguntas diferentes. Usa datos de catálogo para descubrimiento y el estado renderizado para verificar la oferta seleccionada cuando sea necesario.
  • Los productos variables necesitan una combinación de opciones. Un ID padre o un rango de precio mostrado no identifican una variación comprable.
  • Los IDs de prueba pertenecen al sitio que los define. Inspecciona el tema activo o el escaparate de prueba antes de escribir selectores.
  • Un registro aceptado preserva el contexto de captura. Mantén juntos la identidad de la variación, el tipo de precio, la moneda, la disponibilidad y la hora de captura.

Elige la superficie de WooCommerce que responda a la pregunta

Un scraper de productos de WooCommerce usa fuentes de catálogo para descubrir productos y Playwright para confirmar una oferta interactiva cuando el escaparate renderizado importa. En una tienda que posees o estás autorizado a recopilar, consulta el recurso WooCommerce Store API Products para campos y filtros de catálogo públicos. El recurso Products documenta cómo se representan los productos publicados y protegidos con contraseña y cómo los registros de variaciones de producto difieren de la colección de productos predeterminada.

Usa un feed de catálogo aprobado si proporciona todos los campos requeridos. Un navegador es apropiado cuando un tema o extensión cambia el precio mostrado, el mensaje de stock o la elección de variante después de la interacción. Mantén clara la procedencia de cada campo. Una cantidad de la API de la tienda y el precio visible del producto pueden servir para propósitos diferentes si uno es un valor base y el otro tiene un ajuste de visualización definido por la tienda.

El enfoque funciona para QA de catálogo, monitoreo de ofertas públicas seleccionadas, comprobación de que los productos variables muestran la información prevista y recopilación de capturas de pantalla para revisión de merchandising. Define qué salida espera el equipo antes de hacer scraping. Un fixture adecuado para probar la selección de precios puede omitir campos de marketing y seguir siendo representativo del flujo de trabajo de variaciones.

Requisitos previos e instalación

Usa Node.js con Playwright y un runtime de Chromium. Instala el paquete Playwright y su binario de Chromium o usa un ejecutable de Chromium compatible disponible. Necesitas una tienda que operes o tengas permiso para recopilar y una muestra con productos simples, productos variables y combinaciones no disponibles. El ejemplo siguiente usa un fixture controlado con atributos estables, por lo que puede ejecutarse antes de adaptar los selectores a un tema de WooCommerce.

Para ejecución remota, usa el Agent Browser Playwright quickstart y configura una cuenta y clave de API de Scrapeless como se documenta. Mantén la credencial fuera de las URLs de destino y de los registros. El ejemplo probado localmente toma una página de Playwright existente. Una ejecución remota también necesita un destino autorizado al que se pueda acceder desde la sesión en la nube y cualquier configuración de ubicación o mercado acordada.

Paso 1. Descubre productos y preserva los IDs de origen

Descubre cada objetivo desde un sitemap aprobado, la navegación del escaparate, un feed de la tienda o una fuente de catálogo documentada. Conserva el espacio de nombres de la tienda y el ID de producto cuando estén disponibles. Guarda la ruta canónica para la desduplicación y la ruta original usada en la visita. El URL Standard define cómo se resuelven los enlaces relativos. Conserva los parámetros de consulta de variación o componentes de la ruta cuando identifiquen el estado del escaparate que planeas verificar.

Trata la paginación del catálogo por separado de la extracción de productos. Registra los filtros y el cursor o la página para cada ejecución de descubrimiento. Usa IDs duraderos para desduplicar resultados y establece un límite superior claro y una regla de finalización. Esto evita que las páginas de listado se confundan con las páginas de detalle de producto y le da al equipo una pista de auditoría si parece que una categoría pierde productos.

Paso 2. Identifica cómo el tema confirma una variación

Una captura de variación comienza identificando los controles de opción y la señal que confirma su estado final. Inspecciona la etiqueta y el comportamiento del input. Un tema puede usar selects nativos, muestras de color (swatches) o botones personalizados. Cuando el recolector selecciona una combinación, observa un identificador de variación, un estado de stock resuelto o una cantidad visible ligada a esa combinación. Limita la extracción a la región de detalle del producto para que un banner de oferta o un artículo relacionado no proporcione la cantidad.

La siguiente función de Playwright lee un fixture de producto controlado de estilo WooCommerce. Los IDs de prueba y los atributos de readiness forman parte de ese fixture. En un sitio real de WooCommerce, adapta los selectores a un tema conocido o pide al equipo de la tienda que exponga un marcador de readiness estable. El ejemplo ejercita un cambio de precio asíncrono para una taza azul seleccionada.

async function readWooProduct(page, targetUrl, selections) {
  const response = await page.goto(targetUrl, { waitUntil: 'domcontentloaded' });
  if (!response?.ok()) throw new Error('Product navigation failed');

  const product = page.getByTestId('product-detail');
  const title = await product.getByRole('heading', { level: 1 }).innerText();
  for (const [label, value] of Object.entries(selections)) {
    await product.getByRole('combobox', { name: label }).selectOption(value);
  }

  const expected = JSON.stringify(selections);
  await page.waitForFunction(options => {
    const node = document.querySelector('[data-testid="resolved-offer"]');
    if (!node || node.dataset.state !== 'ready') return false;
    const selected = JSON.parse(node.dataset.options || '{}');
    return Object.entries(JSON.parse(options))
      .every(([name, value]) => selected[name] === value);
  }, expected, { timeout: 5000 });

  return product.getByTestId('resolved-offer').evaluate((node, heading) => ({
    title: heading,
    url: location.href,
    variantId: node.dataset.variantId,
    options: JSON.parse(node.dataset.options),
    priceText: node.querySelector('[data-testid="price"]')?.textContent.trim() || null,
    currency: node.dataset.currency || null,
    availability: node.dataset.availability || 'unknown'
  }), title);
}

El fixture controlado comienza con la opción blanca y resuelve azul a la variación 11 con una cantidad mostrada de $21.00. La prueba local verifica la variación y la cantidad juntas. Un producto simple puede usar una selección vacía y una oferta lista con su propia identidad de producto si el contrato del adaptador define esa forma. Cuando una variación no está disponible, captura su mensaje explícito de stock y permite que la cantidad esté ausente si el contrato lo permite.

Paso 3. Interpreta el precio con su contexto

Un campo de precio debe distinguir el precio de venta visible de un precio de lista tachado y de un rango. Conserva la cantidad bruta y la moneda antes de la normalización. Usa el vocabulario Offer para precio y disponibilidad al nombrar los campos normalizados. Si los impuestos, tarifas, envío o promociones importan, documenta cómo la superficie actual los incluye. Evita mezclarlos silenciosamente entre mercados.

Una variante no disponible sigue siendo una observación de catálogo útil. Almacena su estado explícito y la combinación seleccionada. Da al estado de variante no resuelto un resultado separado para que un precio vacío nunca se interprete como cero. Un selector vacío puede deberse al tema activo, a una combinación no admitida o a un fallo al llegar a la página. Revisa la evidencia contextual antes de asignar una etiqueta de stock.

Utiliza una sola fuente de verdad aprobada para la normalización de montos. Si usas la Store API, interpreta sus montos con la información de moneda correspondiente. Si usas la visualización, analízala de acuerdo con la configuración regional conocida del sitio y el tipo de monto. Compara ambos para una pequeña muestra y registra las diferencias deliberadas. Esto puede detectar plugins de la tienda que cambian un campo de visualización sin actualizar el feed del catálogo.

Paso 4. Ejecuta el navegador en el mercado correcto

Usa Scrapeless Agent Browser cuando el trabajo requiera una sesión de navegador gestionada, y la managed web automation solution cuando planifiques flujos de trabajo interactivos en un portafolio de tiendas. La Playwright proxy setup guide explica cómo el enrutamiento encaja en la configuración del navegador. Para una captura autorizada específica de ubicación, selecciona Residential Proxies y verifica moneda, configuración regional y contexto de entrega después de navegar.

Un mercado establecido en un selector de tienda puede almacenarse en cookies o en la URL. Inicia cada prueba de mercado independiente con la política de sesión prevista. Verifica que el mercado renderizado coincida antes de aceptar el monto. Conserva la duración real del navegador y la transferencia por plantilla para poder compararlas con Scrapeless pricing. La price monitoring proxy solution es útil cuando la colección necesita observaciones coherentes región por región.

Lo que devuelve el Collector

Un registro útil de WooCommerce contiene la tienda, el identificador del producto o variación, atributos seleccionados, URL final, precio bruto mostrado, moneda, disponibilidad explícita y hora de observación. Registra la fuente, la versión de recopilación y si usaste una ruta de producto simple o variable. Guarda las salidas incompletas con un motivo claro y sepáralas de los eventos de oferta validados. Esto ofrece a quienes usan datos de precios o QA una forma fiable de distinguir una observación completa de un collector que llegó a la URL pero no pudo verificar la página.

Construye el adaptador alrededor de una familia de productos conocida

Comienza con una tienda que puedas inspeccionar y una variación cuyo precio visible conozcas. Ejercita por separado las rutas de lista de productos, producto simple y producto variable, luego compara las filas almacenadas con la tienda mostrada. Añade mercados y plantillas de origen una vez que puedas explicar cada campo y resultado.

¿Listo para capturar variantes de WooCommerce en la nube?

Ejecuta tu adaptador de WooCommerce en Agent Browser y verifica la variación seleccionada antes de exportar el precio.

Regístrate hoy y obtén $5 in free credit — no se requiere tarjeta de crédito.

Reclama tus $5 de crédito →

Preguntas frecuentes

¿WooCommerce tiene un recurso público de productos?

La WooCommerce Store API documenta un recurso Products para datos de productos de escaparate. Revisa sus reglas y la superficie admitida y autorizada de la tienda específica antes de recopilar.

¿Cada tema de WooCommerce expone los mismos selectores?

Los temas y extensiones de WooCommerce pueden mostrar los controles de variación de forma diferente. Inspecciona las etiquetas reales y las señales de preparación y cubre cada adaptador con un fixture representativo.

¿Necesitas un proxy para hacer scraping de WooCommerce?

Usa un proxy dirigido por ubicación cuando la observación autorizada requiera una ubicación de red específica. Las pruebas de tiendas locales y los feeds autorizados pueden funcionar sin uno.

¿Qué debe ocurrir cuando la recopilación llega a una página con desafío o denegada?

Registra el fallo y respeta las reglas de acceso de la fuente. Confirma el alcance permitido, los límites de tráfico y los términos aplicables con el propietario y el asesor legal según sea necesario.

¿Esto puede ejecutarse sin un agente de IA?

Playwright puede seleccionar variantes y extraer registros usando código determinista. Comienza con una recopilación acotada y mantén la concurrencia dentro de los límites acordados con la tienda.

¿Debe la clave ser el slug del producto o el ID de la variación?

Usa el espacio de nombres de la tienda con su ID de producto o variación cuando esté disponible. Conserva el slug legible por humanos y la URL completa de la variación como evidencia de captura e información de enrutamiento.

Referencias