XPath (Lenguaje de Ruta XML) es un lenguaje de expresión W3C para direccionar y seleccionar partes de un documento XML, y también puede navegar por HTML. Su característica definitoria es la expresión de ruta, como //a/@href, que recorre el árbol del documento para alcanzar elementos, atributos o texto. Herramientas de scraping como Scrapy soportan XPath para extraer datos de páginas descargadas.

La versión actual, XPath 3.1, se convirtió en una Recomendación W3C el 21 de marzo de 2017. Funciona en XML y, en esta versión, en datos JSON.

Fundamentos de la Sintaxis de XPath

  • Ruta: //title selecciona cada elemento title en cualquier parte del documento.
  • Texto: //title/text() devuelve el texto dentro de esos elementos.
  • Atributos: @ selecciona un atributo, así que //a/@href devuelve los objetivos de los enlaces.
  • Predicados: Los corchetes cuadrados filtran resultados, así que //div[@class="price"] mantiene solo los elementos div con esa clase.

XPath en Web Scraping

Los selectores de Scrapy aceptan tanto XPath como CSS, y Scrapy traduce internamente las consultas CSS a XPath utilizando la biblioteca cssselect. Sus selectores utilizan la biblioteca lxml bajo el capó. En los navegadores, XPath puede navegar por el DOM de documentos HTML y SVG a través de la interfaz XPathExpression, como una alternativa a métodos como querySelectorAll().

Funciones XPath y XSLT

XPath está diseñado para ser incrustado en un lenguaje anfitrión como XSLT. El W3C define una biblioteca de funciones, en el espacio de nombres fn, para XPath, XQuery y XSLT. Las funciones útiles en scraping incluyen:

  • contains() y starts-with(): Coincidencia de subcadenas.
  • normalize-space() y string-length(): Trabajan con valores de cadena.
  • count(): Cuenta elementos.

Por ejemplo, //a[contains(@href, "product")] mantiene solo los enlaces cuyo URL contiene "producto".

Términos Relacionados