Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
XPath (XML Path Language) proporciona una forma flexible de señalar diferentes partes de un documento basado en XML utilizando una sintaxis que no es XML. El nombre de XPath deriva de la expresión de ruta, que proporciona un medio de direccionamiento jerárquico de los nodos en un árbol de documentos. XPath es un lenguaje de consulta con muchas posibilidades. XPath permite el procesamiento de valores conforme al modelo de datos DOM; se basa en una representación DOM del documento HTML y selecciona nodos según varios criterios. Las expresiones XPath también se pueden utilizar en C y C++, JavaScript, esquema XML, PHP, Python y muchos otros lenguajes.
XPath se utiliza principalmente para navegar por el DOM de un documento en lenguaje basado en XML utilizando expresiones XPath. Puede usar XPath en HTML y SVG en lugar de confiar en los métodos GetElement() o QuerySelectorAll() y otras funciones DOM.
Este artículo presenta cómo utilizar el método Evaluate() para navegar por el documento HTML y seleccionar nodos mediante consulta XPath (XPath Query). Aprenderá cómo seleccionar todas las fotos de un documento HTML utilizando expresiones XPath.
Las consultas XPath se realizan principalmente utilizando el método
Evaluate() de la clase
Document. El método Evaluate(expression, contextNode, resolver, type, result) acepta una expresión XPath y otros parámetros dados y devuelve un resultado del tipo especificado. Consideremos los parámetros del método:
expression es una representación de cadena del XPath que se va a evaluar.contextNode especifica el nodo de contexto para la evaluación de la expresión XPath. Es común pasar el documento como nodo de contexto.resolver permite la traducción de todos los prefijos, incluido el prefijo del espacio de nombres xml, dentro de la expresión XPath a los URI del espacio de nombres apropiados.type corresponde al tipo de resultado XPathResult a devolver. Si se especifica un tipo específico, el resultado se devolverá como el tipo correspondiente.result especifica un objeto de resultado específico que este método puede reutilizar y devolver. null es el más común y creará un nuevo XPathResult.A menudo desea guardar una gran cantidad de imágenes de diferentes servicios, como fotos de un álbum en particular. Es posible hacerlo a mano, pero llevaría mucho tiempo. Por lo tanto, es largo e ineficiente, por lo que puedes usar la biblioteca Aspose.HTML para automatizar este proceso.
En este ejemplo, aprenderá cómo encontrar enlaces a todas las imágenes deseadas en una página web utilizando el método Evaluate() y la expresión XPath. XPath es un potente lenguaje de consulta que le brinda mucha libertad para personalizar las consultas. Echemos un vistazo al documento HTML xpath-image.htm. Consta de un encabezado y pie de página que contiene imágenes publicitarias, así como un elemento principal que contiene filas de fotografías intercaladas con banners publicitarios.
Comencemos con una consulta XPath sencilla para todas las imágenes del documento. A continuación se utiliza la expresión XPath //img. Selecciona todos los elementos img sin importar dónde se encuentren en el documento:
XPath Expression
1//imgC# code
1var result = doc.Evaluate("//img", doc, doc.CreateNSResolver(doc), XPathResultType.Any, null);JavaScript code
1var result = document.evaluate("//img", document, null, XPathResult.ANY_TYPE, null);Esta Consulta XPath devolverá todos los enlaces a imágenes (fotos, banners) del encabezado y pie de página, así como los que se encuentran entre las filas de fotos y entre ellas.
Primero, eliminemos los banners en el encabezado y pie de página; hay muchas formas de hacerlo, pero en este ejemplo, configuraremos el filtrado por padre. La consulta XPath //main//img devuelve todos los elementos //img anidados dentro de todos los elementos //main. Este resultado ya es más adecuado para la solicitud de obtener fotografías del documento, pero aún contiene pancartas adicionales.
XPath Expression
1//main//imgC# code
1var result = doc.Evaluate("//main//img", doc, doc.CreateNSResolver(doc), XPathResultType.Any, null);JavaScript code
1var result = document.evaluate("//main//img", document, null, XPathResult.ANY_TYPE, null);En el siguiente paso, eliminaremos los banners en los elementos secundarios /div pares del contenedor main. Esta expresión XPath le permite seleccionar todos los elementos secundarios /div cuyo número de posición dará el resto cuando se divida por 2, es decir, impar:
XPath Expression
1//main/div[position() mod 2 = 1]//imgC# code
1var result = doc.Evaluate("//main/div[position() mod 2 = 1]//img", doc, doc.CreateNSResolver(doc), XPathResultType.Any, null);JavaScript code
1var result = document.evaluate("//main/div[position() mod 2 = 1]//img", document, null, XPathResult.ANY_TYPE, null);Entonces, obtuvimos una lista que contiene enlaces a fotos y anuncios publicitarios ubicados en todos los elementos div impares que son hijos del contenedor main.
Para deshacerse de los anuncios publicitarios ubicados entre las fotos, la expresión XPath debe incluir el nombre de la clase de imagen porque todas las fotos en las filas tienen la clase correspondiente photo:
XPath Expression
1//main/div[position() mod 2 = 1]//img[@class = 'photo']C# code
1var result = doc.Evaluate("//main/div[position() mod 2 = 1]//img[@class = 'photo']", doc, doc.CreateNSResolver(doc), XPathResultType.Any, null);JavaScript code
1var result = document.evaluate("//main/div[position() mod 2 = 1]//img[@class = 'photo']", document, null, XPathResult.ANY_TYPE, null);Como resultado, obtuvimos una lista que contiene solo enlaces a fotos. Así que lo único que queda es descargarlos.
Consideremos el ejemplo de C# de cómo usar el método Evaluate() para seleccionar todas las fotos de un documento HTML usando expresiones XPath. Debes seguir algunos pasos:
1// Use XPath to get only links to photos from HTML
2
3// Create an instance of an HTML document
4using (HTMLDocument doc = new HTMLDocument(Path.Combine(DataDir, "xpath-image.htm")))
5{
6 // Evaluate the XPath expression
7 IXPathResult result = doc.Evaluate("//main/div[position() mod 2 = 1]//img[@class = 'photo']", doc, doc.CreateNSResolver(doc), XPathResultType.Any, null);
8 // Iterate over the resulted nodes and print them to the console
9 Node node;
10 while ((node = result.IterateNext()) != null)
11 {
12 HTMLImageElement img = (HTMLImageElement)node;
13 Console.WriteLine(img.Src);
14 }
15}Aspose.HTML ofrece Aplicaciones web HTML gratuitas que son una colección en línea de convertidores, fusiones, herramientas de SEO, generadores de código HTML, herramientas de URL y más. Las aplicaciones funcionan en cualquier sistema operativo con un navegador web y no requieren ninguna instalación de software adicional. Es una manera rápida y fácil de resolver de manera eficiente y efectiva sus tareas relacionadas con HTML.
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.