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:

 1# Navigate the HTML DOM in Python
 2
 3import aspose.html as ah
 4
 5# Define the HTML content
 6html_code = "<span>Hello,</span> <span>World!</span>"
 7
 8# Navigate between sibling nodes
 9with ah.HTMLDocument(html_code, ".") as document:
10    element = document.body.first_child
11    print(element.text_content)
12
13    element = element.next_sibling
14    print(element.text_content)
15
16    element = element.next_sibling
17    print(element.text_content)

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.

 1# Navigate and inspect an HTML document in Python
 2
 3import os
 4import aspose.html as ah
 5
 6# Prepare the input path
 7data_dir = "data"
 8document_path = os.path.join(data_dir, "html_file.html")
 9
10# Navigate through the HTML element tree
11with ah.HTMLDocument(document_path) as document:
12    element = document.document_element
13    print(element.tag_name)
14
15    element = element.last_element_child
16    print(element.tag_name)
17
18    element = element.first_element_child
19    print(element.tag_name)
20    print(element.text_content)

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:

 1# Select HTML nodes with XPath in Python
 2
 3import aspose.html as ah
 4import aspose.html.dom.xpath as hxpath
 5
 6# Define the HTML content
 7html_code = """
 8    <div class='happy'>
 9        <div>
10            <span>Hello,</span>
11        </div>
12    </div>
13    <p class='happy'>
14        <span>World!</span>
15    </p>
16"""
17
18# Select <span> nodes inside elements with the happy class
19with ah.HTMLDocument(html_code, ".") as document:
20    result = document.evaluate(
21        "//*[@class='happy']//span",
22        document,
23        None,
24        hxpath.XPathResultType.ANY,
25        None
26    )
27
28    node = result.iterate_next()
29    while node is not None:
30        print(node.text_content)
31        node = result.iterate_next()

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.

 1# Extract HTML nodes with CSS selectors in Python
 2
 3import aspose.html as ah
 4
 5# Define the HTML content
 6html_code = """
 7    <div class='happy'>
 8        <div>
 9            <span>Hello,</span>
10        </div>
11    </div>
12    <p class='happy'>
13        <span>World!</span>
14        <p>I use CSS Selector.</p>
15    </p>
16"""
17
18# Select <span> elements inside elements with the happy class
19with ah.HTMLDocument(html_code, ".") as document:
20    elements = document.query_selector_all(".happy span")
21
22    for element in elements:
23        print(element.text_content)

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”