En el post de hoy voy a recopilar una serie de expresiones Xpath que podríamos usar en Screaming Frog, pero también podrían utilizarse en Google Spreadsheets (con la función ImportXml).
Antes de empezar con usos concretos, vamos a adentrarnos en entender los elementos que podemos usar para construir las expresiones.
Empezando con Xpath
El tutorial y la sintaxis de Xpath, son de gran utilidad para empezar a practicar. A modo de resumen introductorio:
¿Qué extrae? | Expresión XPath |
Nodo actual |
. |
Padre del nodo actual |
.. |
Atributo |
@ |
Comodín: cualquier elemento |
* |
Comodín: cualquier atributo |
@* |
Nodo que contiene un valor específico |
[ ] |
Funciona como “O”, usando varias rutas |
| |
Otras funciones a tener en cuenta para construir expresiones más robustas:
¿Qué hace? | Nombre de la función |
Para contar elementos con el criterio que queramos |
Count() |
Para localizar elementos que contengan lo que queramos |
Contains() |
Para localizar elementos que empiezan por lo que queramos |
Start-with() |
Xpath específicas para SEO on page
Las cosas más habituales que podemos extraer, usando expresiones sencillas y combinando algunas de las mencionadas:
¿Qué extrae? | Expresión XPath |
Title | //title |
Meta Description | //meta[@name=’description’]/@content |
URL AMP | //link[@rel=’amphtml’]/@href |
Keywords News | //meta[@name=’news_keywords’]/@content |
Canonical URL | //link[@rel=’canonical’]/@href |
Meta Robots | //meta[@name=’robots’]/@content |
H1 | //h1 |
H2 | //h2 |
H3 | //h3 |
Alt text | //img/@alt |
Imágenes sin alt text | //img[not(@alt)]/@src |
Localización de la imagen | //img[@alt]/@src |
Anchor text | //a/text() |
Anchor text (incluyendo alt text) | (//a/text() | //a/img/@alt) |
Todos los links del documento | //@href |
Xpath específicas para Hreflang
Combinando lo aprendido hasta ahora, podríamos tener distintos objetivos de extracción y querer valores, htmls completos o contar las repeticiones que existen de un elemento concreto.
¿Qué extrae? | Expresión XPath |
Todos los elementos hreflang | //*[@hreflang] |
Valores de hreflang | //*[@hreflang]/@hreflang |
Contar todos los hreflang | count(//link/@hreflang) |
Xpath específicas para Schema
Si nos centramos en los datos estructurados con Schema, podemos también extraer el status de marcado de nuestra web o de competidores usando estas expresiones.
¿Qué extrae? | Expresión XPath |
Tipo de schema | //*[@itemtype]/@itemtype |
Contenido del json-ld | //script[@type=»application/ld+json»] |
Schema Price | //meta[@itemprop=’price’]/@content |
Schema Image | //meta[@itemprop=’image’]/@content |
Schema Name | //h1[@itemprop=’name’] |
Schema Product ID | //header[@itemprop=’productId’]/@content |
Schema Stock Status | //meta[@itemprop=’availability’]/@content |
Dirección | //span[@itemprop=’streetAddress’] |
Localidad | //span[@itemprop=’addressLocality’] |
Región | //span[@itemprop=’addressRegion’] |
Valor de los ratings | //span[@itemprop=’ratingValue’] |
Recuento de ratings | //span[@itemprop=’reviewCount’] |
Xpath específicas para Open Graph y Twitter Cards
Si nos queremos centrar en profundizar el marcado de etiquetado social, también podemos hacerlo usando expresiones centradas en etiquetas Open Graph o Twitter Cards.
¿Qué extrae? | Expresión XPath |
Title OG | //meta[starts-with(@property, ‘og:title’)]/@content |
Description OG | //meta[starts-with(@property, ‘og:description’)]/@content |
Type OG | //meta[starts-with(@property, ‘og:type’)]/@content |
Imagen OG | //meta[starts-with(@property, ‘og:image’)]/@content |
URL OG | //meta[starts-with(@property, ‘og:url’)]/@content |
Url Twitter Card | //meta[starts-with(@property, ‘twitter:title’)]/@content |
Description Twitter Card | //meta[starts-with(@property, ‘twitter:description’)]/@content |
Imagen Twitter Card | //meta[starts-with(@property, ‘twitter:image:src’)]/@content |
Xpath específicas para otros usos variados
Y para cerrar el post, algunas otras expresiones que podríamos usar para otros cometidos más variados
¿Qué extrae? | Expresión XPath |
Cualquier elemento cuya clase se llame «ejemplo» | //*[@class=’ejemplo’] |
Span que estén dentro de un div | //div/span |
Primer elemento de una lista no ordenada | //ul/li[1] |
Último elemento de una lista no ordenada | //ul/li[last()] |
Elementos de una lista no ordenada llamada «ejemplo» | //ul[@class=’ejemplo’]/li |
Enlaces con el texto ancla «ver más» | //a[contains(.,’ver más’)]/@href |
Extraer emails | //a[starts-with(@href, ‘mailto’)] |
Contar todos los elementos h3 | count(//h3) |
Contar todos los canonical | count(//link[@rel=’canonical’]) |
Extraer la etiqueta de verificación de Google Search Console | //meta[@name=’google-site-verification’]/@content |
Iframe | //iframe/@src |
Los iframes de youtube | //iframe[contains(@src ,’www.youtube.com/embed/’)] |
Anotación Mobile | //link[contains(@media, ‘640’) and @href]/@href |
Deja tu comentario si se te ocurre algún otro que pueda ser útil
Si quieres ver usos avanzados, descubre la charla Experiente X(path) impartida en SEOnderground
Útil, muy útil, super útil.
Gracias.