SCRAPE_BY_XPATH
Extrae contenido usando expresión XPath (usa navegador sin interfaz para renderizado JS).
=SCRAPE_BY_XPATH(url, xpath)Devuelve: string or 2D array (multiple matches returned as separate rows)
Descripción General
SCRAPE_BY_XPATH extrae contenido de páginas web usando expresiones XPath, un lenguaje de consulta poderoso para navegar estructuras de documentos XML y HTML. XPath proporciona capacidades más allá de los selectores CSS, incluyendo la habilidad de atravesar hacia arriba en el árbol del documento, seleccionar elementos por su contenido de texto, usar lógica condicional y realizar cálculos dentro de la consulta misma. Cada llamada SCRAPE_BY_XPATH usa un navegador sin interfaz para renderizado completo de JavaScript, haciéndola la opción preferida para extraer sitios web dinámicos modernos.
Parámetros
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
url | string | Sí | La URL completa de la página web a extraer (debe incluir https:// o http://). |
xpath | string | Sí | Expresión XPath dirigida al/los elemento(s) a extraer. Ejemplos: "//h1" (todos los elementos h1), "//div[@class='content']" (divs con clase "content"), "//a/@href" (todas las URLs de enlaces), "//table//tr/td[2]" (segunda columna de todas las filas de tabla). |
Ejemplos
Extraer el encabezado principal de una página
Selecciona el primer elemento h1 en la página y devuelve su contenido de texto. La doble barra "//" significa "encontrar en cualquier lugar del documento."
=SCRAPE_BY_XPATH("https://example.com", "//h1")Salida
Example DomainObtener todos los enlaces que contienen texto específico
Usa la función contains() para encontrar elementos anchor cuyo texto incluye "Leer más" y extrae sus atributos href. Demuestra selección basada en texto de XPath que CSS no puede replicar.
=SCRAPE_BY_XPATH("https://blog.example.com", "//a[contains(text(), 'Read More')]/@href")Salida
| /blog/post-1 |
| /blog/post-2 |
| /blog/post-3 |
Extraer segunda columna de una tabla de datos
Navega a una tabla específica por su ID, luego selecciona la segunda celda (td[2]) de cada fila. Perfecto para extraer una sola columna de datos tabulares.
=SCRAPE_BY_XPATH("https://data.example.com/stats", "//table[@id='stats']//tr/td[2]")Salida
| 1,250 |
| 3,870 |
| 945 |
| 12,300 |
Extraer nombres de productos de elementos con atributos de datos específicos
Apunta solo a productos en stock filtrando por un atributo de datos, luego extrae el elemento h3 dentro de cada contenedor coincidente.
=SCRAPE_BY_XPATH("https://shop.example.com", "//div[@data-available='true']//h3")Salida
| Bluetooth Speaker |
| Wireless Mouse |
| Phone Stand |
Obtener el último párrafo en una página
Usa la función XPath last() para seleccionar solo el elemento de párrafo final. Demuestra capacidades de selección posicional únicas de XPath.
=SCRAPE_BY_XPATH("https://example.com/about", "(//p)[last()]")Salida
Contact us for more information at info@example.com.Casos de Uso
Extracción de Datos Financieros
Extrae precios de acciones, métricas financieras y datos de mercado de portales financieros y páginas de relaciones con inversores. XPath permite el apuntado preciso de celdas de tabla específicas y widgets financieros cargados dinámicamente.
Recopilación de Datos Gubernamentales
Extrae registros públicos, presentaciones regulatorias e informes estadísticos de sitios web gubernamentales. XPath maneja las estructuras de tabla complejas y formatos de documentos anidados comúnmente usados en portales gubernamentales.
Auditorías de Migración de Contenido
Audita contenido de sitios web heredados antes de la migración extrayendo texto, imágenes, metadatos y enlaces internos usando XPath. Construye inventarios de contenido completos que mapean URLs antiguas a sus activos extraídos.
Comparación de Características de Competidores
Extrae páginas de precios de competidores y listas de características para construir matrices de comparación. Usa XPath para extraer nombres de características, indicadores de disponibilidad y detalles de niveles de precios en hojas de cálculo organizadas.
Monitoreo de Noticias y Medios
Monitorea sitios de noticias y bases de datos de comunicados de prensa para menciones de marca, extrayendo títulos de artículos, fechas de publicación y nombres de autores. La selección basada en texto de XPath ayuda a filtrar artículos que mencionan palabras clave específicas.
Consejos Profesionales
Usa el atajo de consola del navegador $x("//tu/xpath") para probar rápidamente expresiones XPath antes de usarlas en tu hoja de cálculo. Esto es más rápido que el método document.evaluate().
Cuando los nombres de clase contienen espacios (múltiples clases), usa contains(@class, "clase-objetivo") en lugar de @class="clase-objetivo" para coincidir con elementos que tienen la clase objetivo entre varias clases.
Usa el operador pipe | para combinar múltiples expresiones XPath en una sola consulta: "//h1 | //h2 | //h3" selecciona todos los encabezados de nivel superior. Los resultados se devuelven en orden del documento.
Para tablas, usa "//table[1]//tr/td[1]" para obtener la primera columna y "//table[1]//tr/td[2]" para obtener la segunda columna. Coloca estos en columnas de hoja de cálculo adyacentes para reconstruir la estructura de tabla.
Las expresiones XPath te permiten apuntar a elementos con precisión que los selectores CSS no pueden igualar. Puedes seleccionar elementos basados en su contenido de texto (//a[contains(text(), "Comprar ahora")]), navegar a elementos padres o hermanos (//span[@class="price"]/parent::div), combinar múltiples condiciones (//div[@class="product" and @data-available="true"]), e incluso usar funciones como position(), last() y string-length() dentro de tus consultas.
Debido a que SCRAPE_BY_XPATH siempre renderiza JavaScript, maneja confiablemente aplicaciones de página única, contenido cargado dinámicamente, secciones de desplazamiento infinito y frameworks renderizados del lado del cliente como React, Vue y Angular. Esto la hace ligeramente más lenta que SCRAPE_BY_CSS_PATH en modo estándar pero asegura que siempre obtengas el contenido de página completamente renderizado.
La función devuelve un string único cuando un elemento coincide, o un array 2D con un valor por fila cuando múltiples elementos coinciden. Este formato de salida se integra naturalmente con Google Sheets, permitiéndote usar los resultados con FILTER, SORT, UNIQUE y otras funciones de array para procesamiento de datos adicional.
SCRAPE_BY_XPATH es particularmente valiosa para analistas de datos, profesionales SEO e investigadores que necesitan control preciso sobre qué elementos extraen y están cómodos con la sintaxis XPath.
Errores Comunes
No matches foundCausa: La expresión XPath no coincide con ningún elemento en la página renderizada. Esto puede suceder si la expresión tiene un error de sintaxis, el elemento objetivo está dentro de un iframe o Shadow DOM, o los nombres de clase se generan dinámicamente.
Solución: Prueba el XPath en la consola de tu navegador usando $x("tu-xpath-aqui"). Verifica errores tipográficos en nombres de elementos y valores de atributos. Si el elemento está dentro de un iframe, intenta extraer la URL del iframe directamente.
Error: URL and XPath are requiredCausa: Uno o ambos parámetros requeridos están vacíos o faltan.
Solución: Asegúrate de que tanto la URL (con protocolo) como la expresión XPath estén proporcionadas como strings no vacíos. Verifica que las referencias de celda apunten a celdas con valores.
Error: XPath evaluation failedCausa: La expresión XPath contiene un error de sintaxis que impide su evaluación. Problemas comunes incluyen comillas no coincidentes, nombres de función inválidos o predicados malformados.
Solución: Revisa tu expresión XPath en busca de errores de sintaxis. Asegúrate de que las comillas estén correctamente coincididas (usa comillas simples dentro de comillas dobles o viceversa). Verifica que los nombres de función estén escritos correctamente. Prueba la expresión en la consola del navegador primero.
Preguntas Frecuentes
Los selectores CSS y XPath ambos apuntan a elementos HTML, pero difieren en capacidades. Los selectores CSS son más simples y funcionan bien para seleccionar elementos por clase, ID o nombre de etiqueta (por ejemplo, ".price", "#header", "h1"). XPath es más poderoso y puede: atravesar hacia arriba en el árbol del documento (seleccionar un padre basado en un hijo), filtrar por contenido de texto (//a[contains(text(), "Comprar")]), usar condiciones lógicas (and/or), seleccionar por posición (//li[3]) y usar funciones como string-length() y normalize-space(). Usa selectores CSS para extracción simple y XPath cuando necesites capacidades de consulta avanzadas.
Sí. A diferencia de SCRAPE_BY_CSS_PATH que ofrece renderizado de JavaScript como parámetro opcional, SCRAPE_BY_XPATH siempre usa un navegador sin interfaz que ejecuta completamente JavaScript antes de evaluar la expresión XPath. Esto significa que funciona confiablemente en todos los tipos de sitios web incluyendo aplicaciones de página única, pero es más lento que SCRAPE_BY_CSS_PATH en modo estándar (sin JS). Si la velocidad es una prioridad y la página objetivo no requiere renderizado de JavaScript, considera usar SCRAPE_BY_CSS_PATH en su lugar.
Agrega /@nombreAtributo a tu expresión XPath. Por ejemplo, para obtener todas las fuentes de imagen: "//img/@src". Para obtener atributos href de enlaces: "//a/@href". Para obtener el valor de un atributo de datos personalizado: "//div/@data-product-id". También puedes combinar extracción de atributos con filtros: "//a[@class='external']/@href" obtiene valores href solo de enlaces con la clase "external".
Sí, esta es una de las características más poderosas de XPath. Usa text() para coincidir contenido de texto: "//a[text()='Haz clic aquí']" coincide con enlaces con el texto exacto "Haz clic aquí". Usa contains() para coincidencias parciales: "//p[contains(text(), 'precio')]" coincide con párrafos que contienen la palabra "precio". Usa starts-with() para coincidencia de prefijo: "//div[starts-with(@class, 'product-')]" coincide con divs cuya clase comienza con "product-". Estos selectores basados en texto no están disponibles con selectores CSS.
Las causas comunes incluyen: (1) El elemento está dentro de un iframe, que es un documento separado que el XPath no puede alcanzar. (2) El elemento está dentro de un componente Shadow DOM, que crea un árbol DOM encapsulado. (3) La sintaxis XPath tiene un error, como comillas incorrectas o problemas de espacio de nombres. (4) La página usa nombres de clase dinámicos que cambian en cada carga (común con bibliotecas CSS-in-JS). Prueba tu XPath en la consola del navegador usando document.evaluate() o el atajo $x(): $x("//tu/xpath/aqui") para verificar que coincide con los elementos esperados.
La mayoría de páginas HTML modernas no requieren manejo de espacios de nombres, y el scraper las procesa como HTML estándar. Sin embargo, si encuentras problemas de espacios de nombres (típicamente con documentos XML o XHTML estrictos), intenta usar la función local-name() en tu XPath: "//*[local-name()='div']" en lugar de "//div". Esto ignora prefijos de espacios de nombres y coincide elementos solo por su nombre de etiqueta local.
XPath proporciona muchas funciones integradas: position() devuelve índice de elemento (//li[position()<=3] obtiene los primeros 3 elementos de lista); last() selecciona el último elemento ((//p)[last()]); count() cuenta elementos (//ul[count(li)>5] selecciona listas con más de 5 elementos); normalize-space() recorta espacios en blanco; translate() convierte caracteres; concat() une strings; y not() niega condiciones (//div[not(@class="hidden")] selecciona divs visibles). Estas funciones pueden combinarse para consultas complejas.
Funciones Relacionadas
Comienza a usar SCRAPE_BY_XPATH hoy
Instala Unlimited Sheets para obtener SCRAPE_BY_XPATH y 41 otras funciones poderosas en Google Sheets.