Qué es XPath y cómo usarlo con ejemplos prácticos

XPATH: Guía Completa y Tutorial Profesional
Marketing wiki 13 min de lectura
Empezar a leer
Escuchar artículo Listo para reproducir
13 min aprox.
¿Te pareció útil? Compártelo con alguien a quien también le pueda servir.
WhatsApp Facebook LinkedIn X
Quédate con lo más importante

Resume este artículo, encuentra los puntos clave o pregunta lo que quieras entender mejor.

XPath significa XML Path Language y es un lenguaje de expresiones utilizado para localizar y seleccionar nodos dentro de estructuras jerárquicas como documentos XML.

También puede utilizarse sobre documentos HTML mediante APIs y herramientas compatibles, por lo que es habitual encontrar XPath en automatización de pruebas, scraping, análisis del DOM y procesamiento de documentos estructurados.

Una expresión XPath puede utilizarse para encontrar desde un elemento concreto por su atributo hasta nodos relacionados mediante padres, hijos, hermanos o antecesores.

Qué es XPath

XPath es un lenguaje diseñado para navegar y seleccionar partes de un documento estructurado como un árbol.

Por ejemplo, imaginemos este HTML:

<nav>
    <a href="/servicios">Servicios</a>
    <a href="/contacto">Contacto</a>
</nav>

Una expresión XPath para seleccionar el enlace de contacto podría ser:

//a[@href='/contacto']

La expresión indica que queremos localizar un elemento a cuyo atributo href tenga exactamente el valor /contacto.

Para qué sirve XPath

XPath puede utilizarse en diferentes escenarios.

  • Seleccionar nodos dentro de XML.
  • Localizar elementos HTML.
  • Automatizar pruebas web.
  • Extraer datos estructurados.
  • Analizar documentos.
  • Navegar relaciones dentro del DOM.

También puede resultar útil en algunas herramientas de crawling o scraping cuando necesitamos indicar exactamente qué parte de una página queremos extraer.

XPath no modifica por sí mismo una página ni mejora automáticamente su SEO. Es principalmente un lenguaje para seleccionar y evaluar información dentro de una estructura.

Cómo funciona XPath

XPath interpreta un documento como una estructura de nodos relacionados.

Por ejemplo:

html
└── body
    └── main
        ├── h1
        └── article
            ├── h2
            └── p

Podemos utilizar expresiones para recorrer esa estructura.

Por ejemplo:

//h1

selecciona elementos h1.

Mientras:

//article//p

selecciona elementos p descendientes de un elemento article.

Sintaxis básica de XPath

Algunos operadores aparecen constantemente al trabajar con XPath.

Sintaxis Función
/ Selecciona desde una ruta determinada
// Busca descendientes que coincidan
. Representa el nodo actual
.. Representa el nodo padre
@ Selecciona o referencia atributos
[] Introduce un predicado o condición
* Coincide con cualquier elemento según el contexto

XPath absoluto y XPath relativo

En automatización web se utilizan habitualmente los términos XPath absoluto y XPath relativo para diferenciar dos estilos de construcción de expresiones.

XPath absoluto

Parte desde la raíz y describe un recorrido completo.

/html/body/main/div/form/input

Puede funcionar, pero suele quedar muy acoplado a la estructura actual del documento.

Si aparece un nuevo contenedor intermedio, la ruta puede dejar de coincidir.

XPath relativo

Busca un elemento utilizando información suficiente para identificarlo sin reproducir todo el árbol.

//input[@name='email']

En automatizaciones web suele resultar más mantenible cuando utiliza atributos o relaciones estables.

Dynamic XPath es un tipo oficial de XPath

No.

Dynamic XPath es una expresión utilizada informalmente en tutoriales de automatización para describir selectores construidos pensando en atributos o estructuras que pueden cambiar.

No es una categoría formal diferente dentro de la especificación XPath.

Por ejemplo:

//button[contains(@id, 'checkout')]

puede describirse informalmente como un XPath dinámico porque no depende del valor completo del atributo.

Técnicamente sigue siendo simplemente una expresión XPath.

Cómo seleccionar elementos por atributo

Una de las operaciones más frecuentes consiste en seleccionar elementos utilizando atributos.

Por ID:

//input[@id='email']

Por clase exacta:

//div[@class='alert']

Por atributo href:

//a[@href='/contacto']

Por varios atributos:

//input[@type='email' and @name='correo']

Conviene tener cuidado con class, porque un elemento puede contener varias clases y su valor completo puede cambiar de orden.

Cómo usar contains en XPath

La función contains() permite comprobar si una cadena contiene determinado valor.

Por ejemplo:

//div[contains(@class, 'producto')]

También puede utilizarse con texto:

//button[contains(., 'Comprar')]

Sin embargo, utilizar contains() para solucionar cualquier selector dinámico puede producir coincidencias demasiado amplias.

Siempre conviene comprobar qué nodos devuelve realmente la expresión.

Cómo usar starts-with en XPath

starts-with() permite seleccionar valores que comienzan de determinada manera.

Por ejemplo:

//input[starts-with(@id, 'user_')]

Puede resultar útil cuando parte del identificador es estable y otra parte cambia dinámicamente.

Cómo seleccionar texto con XPath

También es posible utilizar el contenido textual de los nodos.

Por ejemplo:

//button[text()='Comprar']

Para determinadas estructuras puede ser más apropiado trabajar con el valor textual del elemento:

//button[contains(., 'Comprar')]

La elección depende del HTML concreto y de si existen nodos internos adicionales.

Qué son los predicados XPath

Los predicados son expresiones entre corchetes utilizadas para filtrar nodos.

Por ejemplo:

//input[@type='email']

El predicado es:

[@type='email']

También podemos seleccionar por posición:

//ul/li[1]

o combinar condiciones:

//input[@type='email' and @required]

Los predicados son una de las herramientas principales para construir expresiones más específicas.

Qué son los ejes XPath

Los axes o ejes representan relaciones entre el nodo actual y otros nodos dentro del árbol.

XPath dispone de distintos ejes, entre ellos:

  • child::
  • parent::
  • ancestor::
  • descendant::
  • following-sibling::
  • preceding-sibling::
  • following::
  • preceding::

Por ejemplo:

//label[.='Correo']/following-sibling::input

busca un input hermano posterior a un label determinado.

Los ejes son especialmente útiles cuando el elemento no dispone de un atributo suficientemente estable y necesitamos encontrarlo mediante su relación con otros nodos.

Ejemplos prácticos de XPath

Objetivo XPath
Todos los enlaces //a
Elemento por ID //*[@id='producto']
Enlace por href //a[@href='/contacto']
Input por name //input[@name='email']
Clase que contiene un término //div[contains(@class,'card')]
Elemento con texto //h2[text()='Servicios']
Primer elemento li //ul/li[1]
Hermano posterior //label[.='Email']/following-sibling::input

Cómo usar XPath en Selenium

Selenium WebDriver admite XPath como una de sus estrategias para localizar elementos dentro de una página.

Por ejemplo, en Python:

element = driver.find_element(
    By.XPATH,
    "//input[@name='email']"
)

En Java:

WebElement element =
    driver.findElement(
        By.xpath("//input[@name='email']")
    );

Una vez encontrado el elemento, Selenium puede interactuar con él según las posibilidades de WebDriver.

XPath es especialmente útil cuando necesitamos localizar elementos mediante relaciones dentro del DOM o condiciones que serían incómodas de expresar con otros localizadores.

XPath o CSS selector

No existe una regla que indique que XPath deba utilizarse siempre.

Selenium dispone de diferentes estrategias de localización, entre ellas:

  • ID.
  • Name.
  • Class name.
  • CSS selector.
  • XPath.
  • Link text.

Cuando existe un identificador estable y único, suele ser preferible utilizarlo.

Cuando no existe, un CSS selector compacto puede resultar muy legible.

XPath aporta ventajas especialmente cuando necesitas navegar relaciones como:

  • Padres.
  • Antecesores.
  • Hermanos.
  • Condiciones textuales.

La mejor opción es normalmente el selector más estable, comprensible y fácil de mantener.

Cómo probar XPath en el navegador

Los navegadores proporcionan APIs capaces de evaluar expresiones XPath sobre documentos HTML y XML.

En JavaScript puede utilizarse:

document.evaluate(
    "//h2",
    document,
    null,
    XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
    null
)

También puedes utilizar las herramientas de desarrollo para inspeccionar el DOM y probar qué elementos coinciden con una expresión.

Conviene comprobar siempre:

  • Cuántos elementos coinciden.
  • Si el nodo esperado es realmente el seleccionado.
  • Si el selector depende de una estructura frágil.

XPath en XML

XPath nació específicamente para trabajar con estructuras XML.

Por ejemplo:

<catalogo>
    <producto id="1">
        <nombre>Monitor</nombre>
        <precio>800</precio>
    </producto>
</catalogo>

Para seleccionar los nombres podríamos utilizar:

//producto/nombre

Y para localizar un producto concreto:

//producto[@id='1']

XPath es especialmente potente cuando necesitamos recorrer documentos XML complejos mediante relaciones jerárquicas.

XPath en HTML

Los documentos HTML también pueden consultarse mediante implementaciones XPath compatibles.

MDN documenta, por ejemplo, la API document.evaluate() para evaluar expresiones XPath contra documentos HTML y XML.

Por eso XPath aparece frecuentemente en:

  • Selenium.
  • Automatización.
  • Scraping.
  • Testing.
  • Herramientas de extracción.

XPath para scraping

En extracción de datos podemos utilizar expresiones XPath para definir qué información queremos recuperar.

Por ejemplo:

//article//h2

podría seleccionar encabezados h2 dentro de artículos.

Y:

//article//a/@href

puede utilizarse en implementaciones compatibles para seleccionar atributos href de enlaces dentro de esos artículos.

El resultado concreto dependerá de la biblioteca o herramienta utilizada para procesar la expresión.

Cómo puede utilizarse XPath en SEO

XPath puede ser útil para analizar sitios web, pero no es un factor de posicionamiento.

En herramientas compatibles podría utilizarse para extraer elementos como:

  • Titles.
  • Meta descriptions.
  • H1.
  • Encabezados.
  • Enlaces.
  • Atributos.
  • Contenido específico.

Por ejemplo:

//h1

puede utilizarse para localizar encabezados H1.

Y:

//meta[@name='description']/@content

puede identificar el atributo de una meta description en herramientas que permitan extraer atributos mediante XPath.

Esto puede facilitar una auditoría, pero utilizar XPath no hace que una página posicione mejor.

XPath mejora el rendimiento web

No directamente.

XPath no es una técnica de optimización de velocidad ni Core Web Vitals.

Es un lenguaje utilizado para seleccionar información.

En automatizaciones y aplicaciones, una expresión innecesariamente compleja sí puede resultar menos eficiente o más difícil de mantener que un selector sencillo.

Pero eso debe diferenciarse del rendimiento SEO o de carga que experimenta el usuario de una página.

Errores frecuentes al utilizar XPath

  • Crear rutas absolutas demasiado largas.
  • Utilizar índices sin necesidad.
  • Depender de clases o IDs generados dinámicamente.
  • Utilizar contains() con coincidencias demasiado amplias.
  • No comprobar cuántos nodos devuelve la expresión.
  • Crear selectores difíciles de comprender.
  • Recorrer todo el DOM cuando existe un contexto más específico.
  • Elegir XPath cuando existe un locator mucho más simple y estable.

Cómo crear XPath más robustos

Un buen selector debería depender de características razonablemente estables del documento.

Por ejemplo, frente a:

/html/body/div[2]/div[3]/form/div[2]/input

puede ser más mantenible utilizar:

//input[@name='email']

si ese atributo representa de forma estable al elemento.

También conviene mantener las expresiones tan sencillas como permita el caso de uso.

Un XPath de seis líneas no es necesariamente mejor que un selector CSS sencillo.

Qué versión de XPath existe

XPath ha evolucionado mediante diferentes versiones.

El W3C publicó XPath 1.0, posteriormente XPath 2.0, XPath 3.0 y XPath 3.1.

XPath 3.1 amplió el lenguaje y su modelo de datos con capacidades adicionales.

Sin embargo, que una característica exista en la especificación no significa automáticamente que esté disponible en cada navegador, framework o herramienta.

Cuando utilices XPath en Selenium, JavaScript, una librería de scraping o un procesador XML, conviene comprobar qué sintaxis y funciones admite específicamente esa implementación.

Cuándo merece la pena aprender XPath

XPath resulta especialmente útil si trabajas con:

  • XML.
  • Selenium.
  • Automatización de pruebas.
  • Scraping.
  • Procesamiento documental.
  • Auditorías técnicas.

No necesitas memorizar cada función o eje.

Es mucho más importante comprender cómo funciona el árbol de nodos, cómo se construyen los predicados y cómo localizar un elemento utilizando relaciones estables.

Una vez entiendes esos principios, XPath deja de parecer una colección de símbolos y se convierte en una forma precisa de expresar qué nodo necesitas encontrar dentro de una estructura.

Convierte lo que aprendes en el siguiente paso de tu negocio

Explora nuestros servicios o cuéntanos qué necesitas mejorar.

Hablemos de tu proyecto

Preguntas frecuentes sobre XPath

Qué es XPath

XPath significa XML Path Language y es un lenguaje de expresiones utilizado para navegar, seleccionar y evaluar nodos dentro de estructuras como documentos XML.

Para qué sirve XPath

Sirve para localizar nodos y datos dentro de documentos estructurados y es habitual en XML, automatización de pruebas, Selenium, scraping y análisis del DOM.

Se puede usar XPath en HTML

Sí. APIs y herramientas compatibles permiten evaluar expresiones XPath sobre documentos HTML además de XML.

Qué diferencia hay entre XPath absoluto y relativo

Un XPath absoluto parte normalmente desde la raíz y describe un recorrido completo. Un XPath relativo localiza elementos utilizando una expresión que no necesita reproducir toda la estructura del documento.

Qué es Dynamic XPath

Es un término informal utilizado principalmente en automatización para describir expresiones creadas para elementos cuyos atributos o estructura pueden variar. No es un tipo oficial distinto dentro de la especificación XPath.

Qué significa // en XPath

Se utiliza dentro de expresiones para localizar nodos descendientes que coincidan con determinados criterios sin tener que especificar cada nivel intermedio de la estructura.

Qué significa @ en XPath

El símbolo @ se utiliza para referirse a atributos. Por ejemplo, //input[@name='email'] selecciona inputs cuyo atributo name tenga el valor email.

Qué es contains en XPath

La función contains() comprueba si una cadena contiene determinado valor y puede utilizarse para construir condiciones dentro de una expresión XPath.

Qué son los XPath axes

Son ejes que describen relaciones entre nodos, como padre, hijo, ancestro, descendiente o hermano.

Cómo se usa XPath en Selenium

Selenium permite utilizar XPath como estrategia de localización mediante expresiones que identifican elementos dentro del DOM.

Es mejor XPath o CSS selector

Depende del caso. Un ID estable o un CSS selector sencillo suelen ser buenas opciones, mientras XPath resulta especialmente útil cuando necesitas relaciones complejas entre nodos o determinadas condiciones textuales.

XPath ayuda al SEO

No es un factor de posicionamiento. Puede utilizarse como herramienta de análisis para extraer títulos, encabezados, enlaces, metadatos y otros elementos durante una auditoría SEO.

Margetc

Consultor SEO e ingeniero de sistemas en Margetc, especializado en posicionamiento, desarrollo web, automatización y analítica digital.

Ver perfil del autor

👀 Tu valoración cuenta. ¡Califica!

5,0/5 494 opiniones

Hola 👋 ¿En qué podemos ayudarte? Cuéntanos qué necesitas y te orientamos por WhatsApp.