DICCIONARIO · X

XPath

XPath (XML Path Language) es un lenguaje de expresiones del W3C que sirve para localizar nodos dentro de un documento XML o HTML mediante rutas, como /html/body/h1. Es la base de XSLT y XQuery y se usa a diario para extraer datos, automatizar pruebas con Selenium y auditar webs en SEO.

Germán Gutiérrez Escrito por Germán Gutiérrez 6 min de lectura
Ficha rápida
Nombre completo
XML Path Language
Organismo
W3C (World Wide Web Consortium)
Versiones
1.0 (1999), 2.0 (2007), 3.0 (2014) y 3.1 (2017)
En navegadores
XPath 1.0, mediante document.evaluate() y $x() en la consola de Chrome
Operadores lógicos
and y or, en minúsculas; or tiene menos precedencia que and

≡En resumen

  • XPath describe rutas para llegar a elementos, atributos o texto de un documento XML o HTML.
  • Los predicados entre corchetes filtran nodos: //a[@rel='nofollow'] selecciona los enlaces nofollow.
  • Para combinar condiciones se usa and u or dentro del predicado: //input[@type='email' and @required].
  • Los navegadores solo implementan XPath 1.0, así que funciones de versiones posteriores no funcionan en Selenium ni en la consola.
  • En SEO, XPath permite extraer títulos, precios o etiquetas en Google Sheets (IMPORTXML) y en rastreadores como Screaming Frog.

01 ¿Qué es XPath?

El W3C publicó XPath 1.0 como recomendación el 16 de noviembre de 1999. La propia especificación explica el nombre: XPath usa una notación de rutas parecida a la de las URL para moverse por la jerarquía de un documento. Nació para servir de base común a XSLT (transformaciones de XML) y XPointer, y más tarde a XQuery.

Aunque se diseñó para XML, hoy su uso más frecuente es el HTML: los navegadores convierten cada página en un árbol de nodos (el DOM) y XPath permite señalar cualquier parte de ese árbol con una sola línea.

Versión Recomendación W3C Novedades principales
XPath 1.0 16/11/1999 Rutas, ejes, predicados y una biblioteca de 27 funciones. Es la que implementan los navegadores.
XPath 2.0 23/01/2007 Secuencias, tipos de datos de XML Schema, expresiones if y for, expresiones regulares
XPath 3.0 08/04/2014 Funciones de orden superior y operador de concatenación ||
XPath 3.1 21/03/2017 Mapas y arrays, con soporte para JSON
Versiones de XPath publicadas por el W3C

02 Sintaxis básica de XPath

Una expresión XPath se lee de izquierda a derecha, como una ruta de carpetas. Estas son las piezas que usarás en el 90 % de los casos:

Sintaxis Significado Ejemplo
/ Hijo directo (o raíz si va al principio) /html/body
// Descendiente en cualquier nivel //p
@ Atributo //img/@alt
[ ] Predicado o filtro //li[1]
* Cualquier elemento //div/*
. y .. Nodo actual y nodo padre //span/..
text() Nodo de texto //h1/text()
| Unión de dos conjuntos de nodos //h1 | //h2
Elementos de la sintaxis XPath

03 Operadores and y or en XPath (con ejemplos)

Para exigir varias condiciones a la vez se usa el operador and dentro del predicado; para aceptar una u otra, or. Se escriben siempre en minúsculas: AND, && o || no funcionan como operadores lógicos en XPath 1.0.

Expresión Qué selecciona
//input[@type='email' and @required] Campos de email que además son obligatorios
//a[contains(@href,'/blog/') and @target='_blank'] Enlaces al blog que se abren en otra pestaña
//a[@rel='nofollow' or @rel='sponsored'] Enlaces marcados como nofollow o sponsored
//img[not(@alt) or @alt=''] Imágenes sin texto alternativo o con alt vacío
//producto[precio > 20 and stock > 0] Productos de más de 20 con existencias (en XML)
//button[@type='submit' and (contains(., 'Enviar') or contains(., 'Send'))] Botones de envío en español o en inglés
Ejemplos de and, or y not() en XPath
Ejemplo · and frente a predicados encadenados

//li[@class='item' and @data-stock='1'] y //li[@class='item'][@data-stock='1'] devuelven lo mismo. La diferencia aparece con la posición: //li[@class='item'][2] es el segundo de los elementos con esa clase, mientras que //li[2][@class='item'] es el segundo li de su lista, solo si además tiene esa clase.

04 Funciones XPath más útiles: contains(), text() y compañía

01

contains(a, b)

Devuelve verdadero si el texto a contiene b. //div[contains(@class,'precio')] encuentra clases como «precio precio-oferta».

02

starts-with(a, b)

Comprueba el inicio de un texto: //a[starts-with(@href,'https')] selecciona enlaces seguros.

03

normalize-space()

Quita espacios sobrantes: //button[normalize-space()='Comprar'] evita fallos por saltos de línea.

04

not()

Niega una condición: //a[not(@rel)] devuelve enlaces sin atributo rel.

05

count()

Cuenta nodos: count(//h1) debería dar 1 en la mayoría de páginas.

06

last() y position()

Filtran por posición: //tr[last()] es la última fila de cada tabla.

05 Cómo probar una expresión XPath en Chrome

  1. 1

    Abre las DevTools

    Pulsa F12 o clic derecho y «Inspeccionar» sobre la página que quieres analizar.

  2. 2

    Busca en el panel Elements

    Pulsa Ctrl+F (Cmd+F en Mac) dentro del panel: el buscador acepta expresiones XPath y resalta las coincidencias.

  3. 3

    Usa la consola

    Escribe $x("//h2") en la pestaña Console: devuelve un array con los elementos que coinciden.

  4. 4

    Copia un XPath generado

    Clic derecho sobre un nodo y «Copy > Copy XPath». Úsalo como punto de partida, no como expresión final.

  5. 5

    Hazlo robusto

    Sustituye rutas absolutas como /html/body/div[3]/div[2] por atributos estables: //form[@id='contacto']//input[@name='email'].

En JavaScript puedes hacer lo mismo con document.evaluate(), un método disponible en todos los navegadores modernos que funciona tanto con documentos HTML como XML.

06 Para qué se usa XPath: Selenium, scraping y SEO

01

Pruebas automáticas

Selenium, Playwright y otras herramientas localizan botones y campos con XPath para simular a un usuario.

02

Web scraping

Librerías como lxml o Scrapy extraen precios, fichas o reseñas de páginas web con expresiones XPath.

03

Transformar XML

XSLT usa XPath para convertir un XML en HTML, otro XML o texto, por ejemplo en feeds de productos.

04

Auditorías SEO

Los rastreadores SEO permiten extracción personalizada con XPath para revisar etiquetas en miles de URL.

Ejemplo · XPath en Google Sheets con IMPORTXML

La función IMPORTXML(url; consulta_xpath) de Google Sheets importa datos de una página con una expresión XPath. Algunas consultas útiles para SEO:

  • =IMPORTXML(A2; "//title"): el título de la URL de la celda A2.
  • =IMPORTXML(A2; "//meta[@name='description']/@content"): la meta descripción.
  • =IMPORTXML(A2; "//link[@rel='canonical']/@href"): la URL canónica.
  • =IMPORTXML(A2; "//a[@rel='nofollow' and contains(@href,'http')]/@href"): enlaces externos nofollow.

Es una forma rápida de preparar una auditoría web SEO sin instalar nada, aunque para webs grandes compensa un rastreador.

Si extraes datos con frecuencia, lo sensato es automatizarlo: un flujo que visite las URL, aplique las expresiones y guarde el resultado en una hoja o base de datos. Puedes montarlo con herramientas como las que explicamos en automatizaciones n8n o encargarlo como desarrollo web a medida cuando necesitas volumen, control de errores y respeto por las condiciones de cada sitio.

07 XPath vs selectores CSS: cuál usar

Criterio XPath Selector CSS
Documentos XML y HTML HTML (y XML en algunos entornos)
Buscar por texto visible Sí: //a[contains(., 'Contacto')] No de forma estándar
Subir al elemento padre Sí, con .. o ancestor:: Solo con :has(), de soporte más reciente
Operadores lógicos and, or y not() Coma para «o» y :not()
Legibilidad Más larga Más corta: div.precio > span
Uso típico Scraping complejo, XSLT, IMPORTXML Estilos, JavaScript y pruebas sencillas
Comparativa entre XPath y selectores CSS

Preguntas frecuentes sobre XPath

Es un lenguaje del W3C para localizar nodos de un documento XML o HTML mediante rutas. Por ejemplo, //h1 selecciona todos los encabezados H1 de una página.

Dentro de un predicado y en minúsculas: //input[@type='email' and @required] selecciona los campos de email obligatorios. Puedes encadenar varias condiciones con and y agruparlas con paréntesis.

and exige que se cumplan todas las condiciones y or que se cumpla al menos una. or tiene menos precedencia que and, por eso conviene usar paréntesis al combinarlos.

Una barra selecciona hijos directos; dos barras seleccionan descendientes en cualquier nivel. /html/body/p solo encuentra párrafos hijos de body; //p los encuentra en toda la página.

Con contains() o comparando el texto: //button[contains(., 'Comprar')] o //a[normalize-space()='Contacto']. El punto representa el texto completo del elemento.

CSS es más corto y legible para casos simples. XPath es mejor cuando necesitas filtrar por texto, combinar condiciones o subir al elemento padre.

XPath 1.0. Por eso funciones de versiones posteriores, como matches() o lower-case(), no funcionan en la consola de Chrome ni en Selenium.

Fuentes consultadas

Germán Gutiérrez

Sobre el autor

Germán Gutiérrez

Development Manager en appyweb

Dirige el equipo de desarrollo de appyweb: aplicaciones web y móviles, SaaS, integraciones y arquitectura de software.

Ver perfil en LinkedIn ↗

Términos relacionados

Ver todos los términos →
X XML XML (Extensible Markup Language) es un lenguaje de marcado del W3C, recomendación desde el 10 de febrero de 1998, que estructura datos en texto con etiquetas que define cada aplicación. Es legible por personas y máquinas, y sigue siendo la base de los sitemaps, los feeds RSS, los documentos de Office y la factura electrónica. H HTML HTML (HyperText Markup Language, «lenguaje de marcado de hipertexto») es el lenguaje de marcado estándar con el que se estructura el contenido de las páginas web: títulos, párrafos, enlaces, imágenes o formularios. No es un lenguaje de programación. Hoy lo mantiene el WHATWG como HTML Living Standard, una especificación única que se actualiza continuamente. C CSS CSS (Cascading Style Sheets, «hojas de estilo en cascada») es el lenguaje de estilos que define cómo se presentan los documentos HTML: colores, tipografías, espacios, maquetación y adaptación a cada pantalla. No es un lenguaje de programación, sino de presentación; es un estándar del W3C que interpretan todos los navegadores y separa el diseño del contenido. W Web scraping El web scraping es la extracción automatizada de datos concretos de páginas web mediante un programa que descarga el código, lo analiza y guarda campos como precios, nombres o fechas en un formato estructurado. Sirve para vigilar precios, investigar mercados o alimentar modelos de IA, pero su legalidad depende de qué datos se extraen, de dónde y cómo. G Google Sheets Google Sheets (Hojas de cálculo de Google) es la aplicación de hojas de cálculo online de Google, que funciona en el navegador y en el móvil y permite editar un mismo archivo entre varias personas a la vez. Es gratuita con una cuenta de Google, se guarda sola en Google Drive y sirve para cálculos, presupuestos, informes y gráficos. J JavaScript JavaScript es un lenguaje de programación interpretado o compilado al vuelo, dinámico y basado en prototipos, que los navegadores ejecutan para hacer interactivas las páginas web. Junto a HTML y CSS forma la base de la web: lo usa el 98,9 % de los sitios, y con Node.js también sirve para servidores y aplicaciones.

Cuéntanos tu proyecto. Te respondemos en 48 h.

Auditoría gratuita de IA, campañas, web y SEO, con prioridades y cifras reales de tu negocio.

✓ Sin compromiso ✓ Respuesta en 48 h laborables ✓ Un consultor senior, no un bot
WA WhatsApp