What es XPath? Sintaxis de ruta, ejes y ejemplos de extracción

What es XPath?

Scrapeless Scraping Browser proporciona contenido DOM de páginas públicas renderizadas que los flujos de trabajo de extracción pueden navegar con expresiones XPath.

Resumen

  • XPath es un lenguaje de expresión para seleccionar valores y nodos en datos estructurados en árbol. Su sintaxis de ruta puede navegar hijos, descendientes, padres, ancestros, hermanos y atributos.
  • XPath funciona desde un nodo de contexto. Las rutas absolutas comienzan en la raíz del documento; las rutas relativas comienzan desde el contexto actual.
  • Los predicados filtran nodos candidatos. Los valores de atributos, posiciones, pruebas de texto y funciones pueden estrechar una ruta.
  • XPath es útil cuando la selección depende de relaciones. La travesía de padres o ancestros y las condiciones dependientes del texto son razones comunes para elegirlo.

XPath, abreviatura de Lenguaje de Ruta XML, es un lenguaje de expresión utilizado para dirigir nodos y valores en un árbol. Aunque su nombre proviene de XML, las APIs de navegador y automatización pueden evaluar XPath contra documentos HTML también.

El Recomendación W3C XPath 3.1 define XPath como un lenguaje de expresión cuyas expresiones de ruta proporcionan direccionamiento jerárquico sobre un modelo de datos.

¿Cómo Funciona XPath?

XPath evalúa una expresión contra un contexto y devuelve nodos coincidentes o valores calculados.

Una ruta se compone de pasos. Cada paso elige un eje, aplica una prueba de nodo y puede añadir predicados. La expresión //article[@data-id] selecciona descendientes de artículos que tienen un atributo data-id. La expresión .//h2 busca descendientes H2 del nodo de contexto actual.

¿Cuáles son las Partes Principales de una Expresión XPath?

XPath combina pasos de ubicación, ejes, pruebas de nodo, predicados y funciones.

SintaxisPropósitoEjemplo
/Comienza una ruta absoluta o separa pasos hijos/html/body
//Selecciona descendientes desde el punto actual//main//a
.Se refiere al contexto actual.//span
..Se mueve al padre//span/..
@Selecciona o prueba un atributo//a/@href
[ ]Filtra nodos candidatos//li[@data-id]

¿Cuáles son los Ejes XPath?

Los ejes XPath describen la relación entre el nodo de contexto y los nodos candidatos.

  • Hijo y descendiente. Se mueve un nivel hacia abajo o busca a través de descendientes más profundos.
  • Padre y ancestro. Se mueve hacia arriba desde un nodo conocido hasta un elemento contenedor.
  • Hermano-siguiente y hermano-anterior. Selecciona nodos al lado del nodo de contexto.
  • Atributo. Selecciona atributos en lugar de nodos de elementos.
  • Auto. Prueba o retiene el nodo de contexto actual.

¿Cómo se Usa XPath en la Extracción Web?

Los raspadores web utilizan XPath para localizar elementos, atributos y texto basado en la estructura del documento y relaciones.

Selección Dependiente del Texto

Encuentra una etiqueta o encabezado por texto, luego selecciona un valor cercano.

Recorrido de antepasados

Comience en un nodo hijo estable y muévase al contenedor de registros que lo posee.

Relaciones entre hermanos

Seleccione un valor que siga a una etiqueta conocida cuando la página carece de atributos útiles.

Fuentes XML

Navegue por feeds u otros documentos XML con espacios de nombres y estructuras específicas del documento.

El navegador Document.evaluate() el método evalúa una expresión XPath contra un nodo de contexto y devuelve un XPathResult.

El MDN comparación de XPath y CSS muestra dónde los ejes corresponden a combinadores CSS o pseudo-clases más nuevas y dónde XPath conserva capacidades distintas.

¿Cómo escribes XPath mantenible?

XPath mantenible utiliza atributos estables y relaciones locales en lugar de copiar una ruta absoluta desde la raíz del documento.

  1. Elija un nodo de contexto estable, como un contenedor de registros.
  2. Utilice atributos o etiquetas específicos que expresen significado.
  3. Limite las búsquedas de descendientes amplios cuando haya un contexto más pequeño disponible.
  4. Evite rutas posicionales largas atadas al diseño actual.
  5. Pruebe la expresión en varias variantes de la página y verifique los conteos de resultados.

¿Cómo se evalúa una expresión XPath?

XPath evalúa una expresión contra un nodo de contexto. Un paso de ubicación selecciona nodos a lo largo de un eje, aplica una prueba de nodo y luego filtra la secuencia resultante con predicados. El contexto es importante: una expresión que comienza con // busca descendientes de una raíz más amplia, mientras que una expresión relativa que comienza con . se mantiene anclada al contenedor de registros actual.

Este modelo de evaluación explica por qué la misma expresión puede devolver diferentes resultados en la consola del navegador y dentro de un bucle de análisis. Si el bucle ya contiene una tarjeta de producto, una ruta relativa debería comenzar desde esa tarjeta. Una búsqueda de descendientes sin alcance puede escapar del registro previsto y devolver repetidamente el primer valor coincidente en la página.

El orden de los nodos y el tipo de resultado también importan. Una expresión puede producir una secuencia de nodos, una cadena, un número o un booleano según el motor y la API de llamada. Lea el contrato de la biblioteca para que el código de extracción no convierta accidentalmente en cadena el nodo equivocado o ignore múltiples resultados.

¿Qué ejes de XPath son importantes para la extracción web?

Los ejes de hijo y descendiente cubren la mayoría de la navegación hacia abajo. Los atributos seleccionan valores adjuntos a un elemento. El padre y el antepasado se mueven hacia arriba cuando un campo debe estar relacionado con una sección etiquetada o un registro que lo encierra. Hermano siguiente y hermano anterior conectan elementos cercanos que comparten un padre.

Los ejes son útiles porque describen relaciones en lugar de posiciones absolutas. Se puede seleccionar un precio de la misma tarjeta que un encabezado de producto incluso cuando las tarjetas no relacionadas usan clases similares. Un valor de tabla se puede asociar con una celda de encabezado cuando no existe una clase de columna dedicada.

Los ejes amplios también pueden crear coincidencias ocultas. Una búsqueda de antepasados que sube demasiado puede alcanzar el cuerpo de la página, y una búsqueda siguiente puede cruzar a otro registro. Limite el eje con una prueba de nodo y un predicado específicos, luego verifique cuántos nodos devuelve en cada plantilla representativa.

¿Cómo funcionan los predicados XPath?

Los predicados filtran los nodos seleccionados por un paso. Pueden probar atributos, elementos hijos, texto normalizado, posición o combinaciones de condiciones. Debido a que los predicados se ejecutan en un contexto, la posición es relativa a la secuencia de nodos actual en lugar de un índice universal en el marcado original.

La igualdad de atributos suele ser más clara que la posición cuando la página expone un identificador significativo. Las condiciones de texto son útiles cuando una etiqueta define la relación, pero el lenguaje visible puede cambiar entre locales o revisiones editoriales. Normalice los espacios en blanco cuando sea apropiado y evite una coincidencia de texto parcial que podría aceptar varias etiquetas no relacionadas.

Mantenga los predicados lo suficientemente pequeños como para explicarlos. Si una expresión combina muchas etiquetas alternativas, ascendencia profunda y posiciones numéricas, separe la clasificación de la página de la selección de campos. Un XPath corto para cada plantilla conocida suele ser más fácil de probar que una expresión destinada a sobrevivir a cada posible página.

¿Qué son los espacios de nombres en XPath?

Los espacios de nombres distinguen elementos que comparten un nombre local pero pertenecen a vocabularios diferentes. Son especialmente relevantes para XML, SVG y documentos mixtos. Un prefijo de espacio de nombres en una expresión XPath debe estar asociado con la URI de espacio de nombres correcta a través de la API utilizada por el navegador o el analizador.

Los documentos HTML analizados como HTML a menudo tienen un comportamiento de espacio de nombres diferente al de los documentos XHTML o XML. Una expresión que funciona en un DOM HTML puede fallar cuando el mismo marcado que parece similar se procesa a través de un analizador XML. Confirme el tipo de contenido de la respuesta y el modo de análisis antes de ajustar la ruta.

Si el SVG incrustado u otro espacio de nombres es parte del objetivo, pruébelo directamente en el motor elegido. Algunas API de conveniencia proporcionan ayudantes de resolución de espacios de nombres, mientras que otras requieren asignaciones explícitas. No elimine las verificaciones de espacio de nombres solo para hacer que una expresión coincida; eso puede seleccionar un elemento no intencionado con el mismo nombre local.

¿Cómo depuras y mantienes XPath?

Depure un paso a la vez. Comience con un contenedor estable, inspeccione los nodos devueltos y agregue el siguiente eje o predicado solo después de que el resultado actual sea correcto. Prueba rutas relativas desde el mismo nodo de contexto que el código de producción utilizará.

Almacene documentos representativos para páginas de lista, detalles, estados vacíos, variantes localizadas y módulos opcionales. Las afirmaciones deben cubrir valores, conteos de nodos y límites de registros. Una ruta que aún devuelve una cadena puede ser incorrecta si ahora apunta a una migaja o duplicado oculto.

Versione expresiones con el esquema de extracción y el clasificador de páginas. Cuando una fuente introduce una nueva plantilla, identifíquela explícitamente y mida su presencia. Esto mantiene el mantenimiento de XPath trazable y evita agregar silenciosamente otra rama a una expresión cuyo comportamiento ya es difícil de razonar.

Conclusión

XPath es un lenguaje de consulta de árboles con un fuerte soporte para navegación, filtrado y valores calculados. Se adapta a tareas de extracción donde el anclaje útil y el nodo deseado están relacionados por condiciones de padre, ancestro, hermano, atributo o texto.

¿Listo para construir su flujo de trabajo de datos web?

Utilice Scrapeless para recuperar contenido web público, luego aplique el patrón de descubrimiento y extracción que se adapte a su conjunto de datos.

Empezar gratis →

Preguntas frecuentes

¿Funciona XPath con HTML?

Sí. Las API de navegador y automatización pueden evaluar XPath contra documentos HTML analizados, sujeto a la versión y características de XPath que implementan.

¿Cuál es la diferencia entre / y // en XPath?

Una barra diagonal simple separa los pasos de hijos directos, mientras que una doble barra diagonal busca descendientes desde el punto actual.

¿Puede XPath seleccionar atributos?

Sí. El eje de atributos utiliza el prefijo @, como en //a/@href para atributos href en elementos de enlace.

¿Por qué deberían tener un alcance las búsquedas amplias //?

Un contexto más pequeño reduce la travesía innecesaria y hace más clara la frontera del registro deseado de la expresión.

Referencias