Navegar HTML en Python

El espacio de nombres Aspose.Html.Dom proporciona una API que representa e interactúa con cualquier documento HTML, XML o SVG y se basa completamente en la especificación WHATWG DOM compatible con muchos navegadores modernos.

Este artículo proporciona información sobre cómo extraer datos mediante programación de documentos HTML con Aspose.HTML for Python via .NET. Lo descubres:

  • cómo navegar por un documento HTML y realizar una inspección detallada de sus elementos utilizando la API de Python;
  • cómo navegar por el documento utilizando CSS Selector y XPath Query.

Navegar en HTML implica acceder y manipular elementos y sus relaciones dentro de un documento. Aspose.HTML for Python via .NET le permite navegar e inspeccionar HTML, lo que implica trabajar con el Modelo de objetos de documento (DOM) proporcionado por la biblioteca. La siguiente lista muestra la forma más sencilla de acceder a todos los elementos DOM:

  1. Modelo de objetos de documento (DOM). La estructura DOM representa el documento HTML como un árbol de nodos. Cada nodo representa una parte del documento, como elementos, texto o comentarios.
  1. Acceso a elementos
  1. Navegando por el árbol DOM
  1. Elementos de manipulación

La Referencia de API proporciona una lista completa de clases y métodos en el espacio de nombres aspose.html.dom.

Consideraremos cómo el DOM representa un documento HTML en la memoria y cómo usar API para navegar a través de archivos HTML. Cuatro de las propiedades de clase Node: first_child, last_child, next_sibling y next_sibling, cada una proporciona una referencia en vivo a otro elemento con la relación definida con el elemento actual si el elemento relacionado existe.

Usando las propiedades mencionadas, puede navegar a través de un documento HTML de la siguiente manera:

 1from aspose.html import *
 2
 3# Prepare HTML code
 4html_code = "<span>Hello</span> <span>World!</span>"
 5
 6# Initialize a document from the prepared code
 7with HTMLDocument(html_code, ".") as document:
 8    # Get the reference to the first child (first SPAN) of the BODY
 9    element = document.body.first_child
10    print(element.text_content)  # output: Hello
11
12    # Get the reference to the whitespace between html elements
13    element = element.next_sibling
14    print(element.text_content)  # output: " "
15
16    # Get the reference to the second SPAN element
17    element = element.next_sibling
18    print(element.text_content)  # output: World!

Inspeccionando HTML

Aspose.HTML contiene una lista de métodos que se basan en las Especificaciones transversales de elementos. Puede realizar una inspección detallada del documento y sus elementos utilizando la API. El siguiente código Python demuestra cómo navegar y extraer elementos específicos y sus propiedades de un documento HTML usando Aspose.HTML for Python via .NET.

 1import os
 2from aspose.html import *
 3
 4# Load a document from a file
 5data_dir = "data"
 6document_path = os.path.join(data_dir, "html_file.html")
 7with HTMLDocument(document_path) as document:
 8    # Get the <html> element of the document
 9    element = document.document_element
10    print(element.tag_name)  # HTML
11
12    # Get the last element of the <html> element
13    element = element.last_element_child
14    print(element.tag_name)  # BODY
15
16    # Get the first element of the <body> element
17    element = element.first_element_child
18    print(element.tag_name)  # H1
19    print(element.text_content)  # Header 1

El código Python proporcionado comienza definiendo la ruta al archivo HTML ubicado en el directorio “data”.

XPath Query

La alternativa a la Navegación HTML es la consulta XPath ( XML Path Language) que a menudo se denomina simplemente XPath. Es un lenguaje de consulta que se puede utilizar para consultar datos de documentos HTML. Se basa en una representación DOM del documento HTML y selecciona nodos según varios criterios. La sintaxis de las expresiones XPath es bastante simple y, lo que es más importante, es fácil de leer y de soportar.

El siguiente ejemplo muestra cómo utilizar consultas XPath dentro de la API de Python Aspose.HTML:

 1from aspose.html import *
 2from aspose.html.dom.xpath import *
 3
 4# Prepare HTML code
 5code = """
 6    <div class='happy'>
 7        <div>
 8            <span>Hello,</span>
 9        </div>
10    </div>
11    <p class='happy'>
12        <span>World!</span>
13    </p>
14"""
15
16# Initialize a document based on the prepared code
17with HTMLDocument(code, ".") as document:
18    # Here we evaluate the XPath expression where we select all child SPAN elements from elements whose 'class' attribute equals to 'happy'
19    result = document.evaluate("//*[@class='happy']//span",
20                               document,
21                               None,
22                               XPathResultType.ANY,
23                               None)
24
25    # Iterate over the resulted nodes
26    node = result.iterate_next()
27    while node is not None:
28        print(node.text_content)
29        node = result.iterate_next()
30        # output: Hello,
31        # output: World!

El método evaluate() en la biblioteca de Python Aspose.HTML le permite ejecutar consultas XPath en documentos HTML o XML, lo que permite la extracción y navegación de datos detallada. Toma una expresión XPath como parámetro principal, especifica la consulta que se ejecutará y devuelve un objeto XPathResult basado en el tipo de resultado definido.

Selector de CSS

Además de la navegación HTML y XPath, la API de Python Aspose.HTML admite la API de selección CSS. Esta API le permite formular patrones de búsqueda utilizando la sintaxis Selectores CSS para identificar y seleccionar elementos dentro de un documento HTML.

Por ejemplo, el método query_selector_all(selector) se puede utilizar para recorrer un documento HTML y recuperar elementos que coincidan con un selector CSS específico. Este método acepta una cadena de selector CSS como argumento y devuelve una NodeList que contiene todos los elementos que se ajustan a los criterios del selector. Con los selectores CSS, puede encontrar y manipular elementos de manera eficiente en función de sus atributos, clases, ID y otros criterios, lo que la convierte en una herramienta versátil para tareas de análisis de documentos tanto simples como complejas.

 1from aspose.html import *
 2
 3# Prepare HTML code
 4code = """
 5    <div class='happy'>
 6        <div>
 7            <span>Hello,</span>
 8        </div>
 9    </div>
10    <p class='happy'>
11        <span>World!</span>
12        <p>I use CSS Selector.</p>
13    </p>
14"""
15
16# Initialize a document based on the prepared code
17with HTMLDocument(code, ".") as document:
18    # Create a CSS Selector that extracts all elements whose "class" attribute equals "happy" and their child <span> elements
19    elements = document.query_selector_all(".happy span")
20
21# Iterate over the resulted list of elements
22    for element in elements:
23        print(element.text_content)
24        # output: Hello,
25        # output: World!

Conclusión

La biblioteca Aspose.HTML for Python via .NET ofrece un sólido conjunto de herramientas para trabajar con documentos HTML, XML y SVG, adhiriéndose a la especificación WHATWG DOM ampliamente admitida de los navegadores modernos. Utilizando la clase HTMLDocument y sus diversas propiedades y métodos de navegación, puede interactuar y manipular eficazmente el contenido HTML, evitando las complejidades de la extracción manual de datos y centrándose en aspectos más estratégicos de sus proyectos.

Aspose.HTML ofrece Aplicaciones web HTML gratuitas en línea que son una colección en línea de convertidores, fusiones, herramientas de SEO, generadores de código HTML, herramientas de URL, comprobaciones de accesibilidad web y más. Las aplicaciones funcionan en cualquier sistema operativo con un navegador web y no requieren ninguna instalación de software adicional. Utilice nuestra colección de aplicaciones web HTML para realizar sus asuntos diarios y hacer que su flujo de trabajo sea fluido.

Texto “Aplicaciones web HTML”

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.