Navegar HTML en Python
Navegación HTML
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:
- 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.
- La clase Document representa el documento HTML, XML o SVG completo y sirve como raíz del árbol de documentos.
- La clase Element representa un elemento en un documento HTML o XML.
- La clase Node representa un único nodo en el árbol del documento.
- Acceso a elementos
- Utilice métodos como
get_elements_by_tag_name(
tagname
) para recuperar elementos por su nombre de etiqueta. - Utilice el método get_element_by_id() para acceder a un elemento específico con una ID única.
- Utilice
get_elements_by_class_name(
class_names
) para recuperar elementos por sus nombres de clase. - Utilice el método
query_selector(
selector
) para un solo elemento o query_selector_all(selector
) para una lista de elementos que coinciden con un selector CSS.
- Navegando por el árbol DOM
- Acceda a los hijos de un elemento usando las propiedades child_nodes o children.
- Utilice la propiedad first_child o last_child para devolver el primer o último nodo hijo del nodo actual, que podría ser cualquier tipo de nodo, como un elemento, texto o comentario.
- Utilice la propiedad parent_node para acceder al padre de un elemento determinado.
- Acceda a hermanos usando propiedades como next_sibling o next_sibling.
- Elementos de manipulación
- Utilice propiedades de la clase Elemento como inner_html y text_content para modificar el contenido del elemento.
- Obtener o establecer atributos usando métodos como
get_attribute(
qualified_name
) y set_attribute(qualified_name, value
).
La
Referencia de API proporciona una lista completa de clases y métodos en el espacio de nombres aspose.html.dom
.
Navegando por el árbol 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”.
- Utilice
HTMLDocument
para cargar un documento y la propiedad document.document_element para acceder al elemento HTML raíz. Imprima el nombre de la etiqueta de este elemento, que es “HTML”. - A continuación, recupere el último elemento secundario del elemento HTML utilizando last_element_child, que es el elemento “BODY”, e imprima su nombre de etiqueta.
- Posteriormente, utilice la propiedad first_element_child para acceder al primer hijo del elemento BODY, que es un elemento “H1”, imprimiendo tanto su nombre de etiqueta como su contenido de texto, que es “Header 1”.
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.