Xpath y el lenguaje que te ayuda a procesar XML

analitica y programacion --
XPath

Los XPath ese lenguaje a medio camino entre los Regex y volverte loco con los selectores (que también hablaremos de ellos)

Básicamente lo que nos permite hacer XPath es buscar y seleccionar teniendo encuenta la estructura jerárquica de XML.

Entendiendo la sintaxis de los Xpath

Xpath usa expresiones de ruta para seleccionar nodos o conjunto de nodos en un documento XML. El nodo se selecciona siguiente una ruta o pasos.

ExpresiónDescripción
/Selecciona el nodo de la raiz
//Selecciona los nodos del documento a partir del nodo actual que coinciden con la selección sin importar dónde se encuentren
.Nodo actual
..Padre del nodo actual
@Selecciona el atributo

Para poder prácticar vamos a utilizar la extensión de Xpath helper para poder hacer pruebas y prácticar con Helper.

Primeras prácticas básicas con XPath en Analaizer

Cómo vemos con las expresiones que tenemos arriab ya podemos hacer una primeras pruebas para sacar cierta información de la web, en este caso usaremos para la práctica analaizer.digital.

Si utilizamos la expresión //title podemos ver que nos devuelve Cursos Analítica Web y programación – AnalAIzer Digital con lo que si, de esta manera ya podemos extraer el título de una manera fácil y sencilla de nuestra página.

Quizas pienses qeu es una tontería pero también podemos probar en sacar los H1 o H2 de la misma manera. Así que con //h1 nos devuelve Cursos de Analítica web y Programación.

Otro ejemplo que podemos utilizar para detectar por ejemplo los anchor text de los enlaces que sería con la expresión //a/text() que en el caso de la página de analaizer nos revuelve los siguientes textos anclas.

  • Todos los cursos
  • Membresias
  • Profesores
  • Contacto
  • Blog
  • Elige tu plan mensual
  • Elige tu plan anual
  • Analítica

He quitado los anclas repetidos por los códigos que detecta para las versiones y cortes de la implementación para el móvil.

Pero vamos ahora a por una expresión más complicada, en este caso sería //meta[@property=’og:updated_time’]/@content ahora esta información nos la da Screaming frog, pero en su momento era una forma de ver cuando un artículo fue actualizado y como podemos ver, la home de Analaizer fue el 2025-01-10T11:51:19+01:00. Era una forma de hacer una criba de que artículos necesitaban ser actualizados y ya os digo que ahorraba un montón de trabajo.

XPath para Schema

Ahora por hacer unos apaños para las páginas que tengan schemas podemos usar también //*[@itemtype]/@itemtype que nos darán el tipo de Schema que estamos utilizando en el caso de analaizer.digital no tenemos schemas metido pero si uso otra página vemos que la respuesta es https://schema.org/Blog o para sacar el contenido schema podemos usar el //script[@type=»application/ld+json»] que nos devolverá el siguiente código:

{"@context":"https://schema.org","@graph":[{"@type":["Person","Organization"],"@id":"https://arriakamarketing.com/#person","name":"Arriaka Marketing & Consulting","logo":{"@type":"ImageObject","@id":"https://arriakamarketing.com/#logo","url":"https://arriakamarketing.com/wp-content/uploads/arriaka-marketing-250x140.webp","contentUrl":"https://arriakamarketing.com/wp-content/uploads/arriaka-marketing-250x140.webp","caption":"Arriaka Marketing & Consulting","inLanguage":"es"},"image":{"@type":"ImageObject","@id":"https://arriakamarketing.com/#logo","url":"https://arriakamarketing.com/wp-content/uploads/arriaka-marketing-250x140.webp","contentUrl":"https://arriakamarketing.com/wp-content/uploads/arriaka-marketing-250x140.webp","caption":"Arriaka Marketing & Consulting","inLanguage":"es"}},{"@type":"WebSite","@id":"https://arriakamarketing.com/#website","url":"https://arriakamarketing.com","name":"Arriaka Marketing & Consulting","publisher":{"@id":"https://arriakamarketing.com/#person"},"inLanguage":"es"},{"@type":"ImageObject","@id":"https://arriakamarketing.com/wp-content/uploads/Mentoria-Copiar-scaled.webp","url":"https://arriakamarketing.com/wp-content/uploads/Mentoria-Copiar-scaled.webp","width":"2560","height":"1884","caption":"Mentoria seo","inLanguage":"es"},{"@type":"ItemPage","@id":"https://arriakamarketing.com/producto/mentoria-seo/#webpage","url":"https://arriakamarketing.com/producto/mentoria-seo/","name":"Mentor\u00eda SEO - Arriaka Marketing & Consulting","datePublished":"2023-07-07T22:48:43+01:00","dateModified":"2024-08-09T10:58:14+01:00","isPartOf":{"@id":"https://arriakamarketing.com/#website"},"primaryImageOfPage":{"@id":"https://arriakamarketing.com/wp-content/uploads/Mentoria-Copiar-scaled.webp"},"inLanguage":"es"},{"@type":"Product","name":"Mentor\u00eda SEO - Arriaka Marketing & Consulting","description":"Conseguite tu mentor\u00eda SEO para tus proyectos web, donde durante 9 meses te acompa\u00f1aremos en tu proyecto para que crezca contigo","category":"Mentoria","mainEntityOfPage":{"@id":"https://arriakamarketing.com/producto/mentoria-seo/#webpage"},"image":[{"@type":"ImageObject","url":"https://arriakamarketing.com/wp-content/uploads/Mentoria-Copiar-scaled.webp","height":"1884","width":"2560"}],"offers":{"@type":"Offer","price":"2450.00","priceCurrency":"EUR","priceValidUntil":"2026-12-31","availability":"https://schema.org/InStock","itemCondition":"NewCondition","url":"https://arriakamarketing.com/producto/mentoria-seo/","seller":{"@type":"Person","@id":"https://arriakamarketing.com/","name":"Arriaka Marketing & Consulting","url":"https://arriakamarketing.com"},"priceSpecification":{"price":"2450","priceCurrency":"EUR","valueAddedTaxIncluded":"false"}},"@id":"https://arriakamarketing.com/producto/mentoria-seo/#richSnippet"},{"@type":"VideoObject","name":"Testimonio Pilar Pla (Tradupla) de mentor\u00eda SEO","description":"Pilar fue una de las primeras personas que mentoric\u00e9, alguien de quien aprendes y da gusto trabajar, Tradupla era un proyecto ambiciosos, donde hab\u00eda que pon...","uploadDate":"2023-11-23T09:15:02-08:00","thumbnailUrl":"https://arriakamarketing.com/wp-content/uploads/hqdefault.jpg","embedUrl":"https://www.youtube.com/embed/Qd-C1BkmBNU","duration":"PT3M13S","width":"640","height":"360","isFamilyFriendly":"True","@id":"https://arriakamarketing.com/producto/mentoria-seo/#schema-3339","isPartOf":{"@id":"https://arriakamarketing.com/producto/mentoria-seo/#webpage"},"publisher":{"@id":"https://arriakamarketing.com/#person"},"inLanguage":"es"}]}

Pero también podemos sacar con añadiendo un count() a la expresión el número de schemas qeu tenemos en el texto, en este caso sería 1 count(//script[@type=»application/ld+json»]).

Xpath para SEO

Te voy a dejar un listado de las expresiones más utilizadas en SEO con Xpath

ExpresiónDescripción
//titleExtrae el título
//meta[@name=’description’]/@contentExtrae la meta decripción
//h1Extrae el H1
//h1 | //h2 | //h3 | //h4 | //h5 | //h6Extrae todos los encabezados
//img[not(@alt)]Extrae imágenes sin atributos Alt
//a[contains(@href, ‘tu-dominio.com’)]Extrae enlaces internos
//a[not(contains(@href, ‘tu-dominio.com’)) and starts-with(@href, ‘http’)]Extrae enlaces externos
//table//tr/td[1]Extrae datos de tablas
//table//tr/tdExtrae datos de una tabla
//script[contains(text(), ‘GTM-‘)]Comprueba el script de Google Tag Maganer
//script[contains(text(), ‘G-‘)]Comprueba el script de Analytics
//*[contains(text(), ‘frase específica’)]Detecta un contenido duplicado
//link[@rel=’canonical’]/@hrefDetecta la etiqueta canonical

Xpath y las presencias de Open Graph

Las redes sociales no iban a ser menos para nosotros y aquí te mostramos como sacarlos

ExpresiónDescripción
//meta[@property=’og:title’]/@contentExtrae el título OG
//meta[@property=’og:description’]/@contentExtrae la descripción OG
//meta[@property=’og:image’]/@contentExtrae la imagen OG

Xpath con JS

Una de las manera que podemos comprobar que tal va los datos de nuestra o cualquier web es mediante la consola del navegador, creando una variable donde evaluamos el documento (código HTML) y mostramos la cadena resultante, por ejemplo:

document.valuate(xpathExpression,contexNode,null,resultType,null);

Esto al final quedaría de la siguiente manera

let resultXpath=document.valuate(‘//title’,document,null,XPathResult.STRING_TYPE,null);
console.log(result.stringValue);

El resultado sería el título de la página

Los datos que introducimos son los siguientes

  • xpathExpression: Tu consulta XPath (como '//title' para extraer el título)
  • contextNode: El nodo de referencia donde empieza la búsqueda (normalmente document para todo el HTML)
  • null: Siempre se deja en null (para el resolver de espacios de nombres)
  • resultType: Especifica el tipo de resultado que quieres (más detalles abajo)
  • null: Es para iteradores, normalmente se deja como null.

Tipos de Resultados (resultType)

  • XPathResult.FIRST_ORDERED_NODE_TYPE: Devuelve el primer nodo encontrado
  • XPathResult.STRING_TYPE: Devuelve una cadena (ejemplo: texto de un nodo).
  • XPathResult.NUMBER_TYPE: Devuelve un número (ejemplo: cuenta de nodos).
  • XPathResult.BOOLEAN_TYPE: Devuelve true o false.
  • XPathResult.UNORDERED_NODE_ITERATOR_TYPE: Para recorrer nodos múltiples.

Facebook
X
LinkedIn
Telegram

Categoría Popular

Categorías

Categoría Popular

No posts found!