En este artículo, veremos cómo analizar y convertir documentos HTML a formato XML usando Python.
Se puede hacer de estas formas:
- Usando el módulo Ixml.
- Usando el módulo Beautifulsoup.
Método 1: usar la biblioteca Python lxml
En este enfoque, utilizaremos la biblioteca lxml de Python para analizar el documento HTML y escribirlo en una representación de string codificada del árbol XML. El kit de herramientas XML lxml es un enlace Pythonic para las bibliotecas C libxml2 y libxslt. Es único porque combina la velocidad y la integridad de las funciones XML de estas bibliotecas con la simplicidad de una API de Python nativa, en su mayoría compatible pero superior a la conocida API de ElementTree.
Instalación:
pip install lxml
Necesitamos proporcionar la ruta para abrir el documento HTML para leerlo y analizarlo usando la función html.fromstring( str ) , devolviendo un solo elemento/árbol de documento. Esta función analiza un documento de la string dada. Esto siempre crea un documento HTML correcto, lo que significa que el Node principal es <html> y hay un cuerpo y posiblemente un encabezado.
htmldoc = html.fromstring(inp.read())
Y escriba el árbol del elemento/documento HTML analizado en una representación de string codificada de su árbol XML utilizando la función etree.tostring() .
out.write(etree.tostring(htmldoc))
Archivo HTML utilizado: entrada .
Código:
Python3
# Import the required library from lxml import html, etree # Main Function if __name__ == '__main__': # Provide the path of the html file file = "input.html" # Open the html file and Parse it, # returning a single element/document. with open(file, 'r', encoding='utf-8') as inp: htmldoc = html.fromstring(inp.read()) # Open a output.xml file and write the # element/document to an encoded string # representation of its XML tree. with open("output.xml", 'wb') as out: out.write(etree.tostring(htmldoc))
Producción:
Método 2: Usar BeautifulSoup
En este enfoque, usaremos el módulo BeautifulSoup para analizar el documento HTML sin formato usando html.parser y modificar el documento analizado y escribirlo en un archivo XML. Proporcione la ruta para abrir el archivo HTML y leer el archivo HTML y analizarlo usando html.parser de BeautifulSoup, devolviendo un objeto del documento analizado.
BeautifulSoup(inp, ‘html.parser’)
Para eliminar el HTML de DocType, primero debemos obtener la representación de la string del documento usando soup.prettify() y luego dividir el documento por líneas usando splitlines() , devolviendo una lista de líneas .
sopa.prettify().splitlines()
Código:
Python3
# Import the required library from bs4 import BeautifulSoup # Main Function if __name__ == '__main__': # Provide the path of the html file file = "input.html" # Open the html file and Parse it # using Beautiful soup's html.parser. with open(file, 'r', encoding='utf-8') as inp: soup = BeautifulSoup(inp, 'html.parser') # Split the document by lines and join the lines # from index 1 to remove the doctype Html as it is # present in index 0 from the parsed document. lines = soup.prettify().splitlines() content = "\n".join(lines[1:]) # Open a output.xml file and write the modified content. with open("output.xml", 'w', encoding='utf-8') as out: out.write(content)
Producción:
Publicación traducida automáticamente
Artículo escrito por anilabhadatta y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA