HTML a Markdown en Python: Las mejores herramientas y técnicas

Última actualización el June 25, 2025

Déjame contarte una anécdota. Hace un tiempo, me vi metido hasta el cuello en un proyecto donde tenía que lidiar con miles de páginas web: HTML caótico, estilos pegados por todos lados y más <div> de los que uno quisiera ver en la vida. ¿El reto? Convertir todo ese revoltijo en un formato limpio y fácil de leer para la wiki interna de mi equipo, que, como muchas plataformas actuales, funciona con Markdown. Al principio, tiré del clásico copiar y pegar, rezando para que todo quedara bien. Pero después del tercer café y la quinta tabla que se desarmaba, supe que tenía que haber una forma más inteligente.

HTML to Markdown power.png

Y no soy el único. Ya sea que estés armando documentación, preparando datos para entrenar un modelo de IA, o simplemente quieres que tus apuntes sean más ordenados y menos caóticos, pasar de HTML a Markdown es una habilidad que cualquier persona de negocios debería tener en su arsenal. ¿Y Python? Es la navaja suiza para este tipo de tareas: fácil de usar, flexible y con librerías que hacen que el proceso sea (casi) entretenido. En esta guía te cuento el porqué, el cómo y los detalles que tienes que tener en cuenta al convertir HTML a Markdown en Python, con trucos prácticos sacados de la experiencia real.

¿Qué implica convertir HTML a Markdown?

Vamos a lo esencial: HTML (HyperText Markup Language) es el lenguaje que le da vida a la web. Es perfecto para los navegadores, pero no tanto si quieres leer o editar el contenido directamente—salvo que te guste descifrar un mar de etiquetas. Markdown, en cambio, es una sintaxis ligera y de texto plano, súper fácil de leer y escribir. En vez de <h1>Título</h1>, simplemente pones # Título. En vez de <strong>negrita</strong>, usas **negrita**. Es tan claro que hasta quienes no son técnicos pueden colaborar sin líos.

Convertir HTML a Markdown es transformar todas esas etiquetas HTML en su versión Markdown. Por ejemplo:

1<h1>Esto es un encabezado</h1>
2<p>Este es un párrafo con <strong>negrita</strong> y <em>cursiva</em>.</p>
3<a href="<https://example.com>">Este es un enlace</a>

se convierte en:

1# Esto es un encabezado
2Este es un párrafo con **negrita** y *cursiva*.
3[Este es un enlace](<https://example.com>)

Este proceso es justo lo contrario de lo que se pensó originalmente para Markdown (de Markdown a HTML), pero hoy es clave en muchos flujos de trabajo, sobre todo porque Markdown sigue ganando terreno tanto en equipos técnicos como de negocio ().

Y si alguna vez necesitas hacer el camino inverso (de Markdown a HTML), Python también tiene soluciones para eso. Pero eso lo dejamos para más adelante.

¿Por qué convertir HTML a Markdown? Ventajas para tu día a día

Entonces, ¿por qué molestarse en convertir HTML a Markdown? La respuesta corta: Markdown es más limpio, legible y fácil de manejar. Pero veamos algunos ejemplos concretos de cómo esta conversión puede mejorar tu trabajo:

Caso de uso¿Por qué convertir a Markdown?
Documentación técnicaLos archivos Markdown son texto plano: ideales para control de versiones, colaboración y edición rápida. Olvídate de los conflictos por etiquetas
fuera de lugar (Document360).
Toma de notas y bases de conocimientoMarkdown es legible incluso en bruto, funciona en apps como Notion y Obsidian, y no te ata a ningún formato propietario (2markdown.com).
Migración de contenido¿Vas a mover HTML antiguo (blogs, intranets) a sistemas modernos? Markdown facilita la migración y la actualización del contenido (cantoni.org).
Preparación de datos para IALos modelos LLM y NLP prefieren texto limpio y estructurado. Markdown elimina el ruido del HTML y deja el contenido listo para IA (Apify).
Edición y colaboración de contenidoLa sintaxis de Markdown es intuitiva para quienes no programan—adiós a los “¿dónde termina este ?” Es fácil de editar y está preparado para el futuro (2markdown.com).

Dato curioso: la sencillez de Markdown es una de las razones por las que se ha vuelto el estándar para archivos README y wikis internas (). Es el formato “escríbelo una vez, úsalo donde quieras”.

Herramientas de Python para pasar de HTML a Markdown

Python es mi lenguaje favorito para manipular texto, y tiene un ecosistema brutal para convertir HTML a Markdown. Aquí te dejo los principales jugadores:

Herramienta / LibreríaTipoVentajasLimitaciones / Notas
markdownifyLibrería de PythonFácil de usar, personalizable, respeta la estructura (encabezados, tablas, imágenes, enlaces), extensiblePuede omitir HTML complicado, requiere BeautifulSoup
html2textLibrería de PythonRobusta ante HTML mal formado, salida minimalista, muchas opciones para ignorar elementosLas tablas pueden perder formato, menos control sobre el estilo avanzado
PandocHerramienta independiente (con wrappers en Python)Soporta HTML complejo, muchos sabores de Markdown, ideal para conversiones masivasRequiere instalación aparte, puede ser excesivo para tareas pequeñas
Aspose.HTML for Python via .NETLibrería comercial para Python/.NETNivel empresarial, soporta varios sabores de Markdown, opciones avanzadasLicencia de pago, configuración más compleja

Vamos a verlas con más detalle.

Comparativa de librerías Python: ¿cuál te conviene?

markdownify

  • Ideal para: La mayoría de usuarios, documentación, cuando quieres que el Markdown se parezca al HTML original.
  • Ventajas: API sencilla, personalizable (puedes elegir el estilo de encabezado, eliminar etiquetas), convierte imágenes, enlaces y tablas ().
  • Desventajas: Puede saltarse contenido si el HTML es muy anidado o inusual ().

html2text

  • Ideal para: Conversiones rápidas, extraer texto legible de páginas web desordenadas, cuando priorizas la simplicidad.
  • Ventajas: Soporta HTML mal formado, fácil de ignorar enlaces/imágenes, salida minimalista ().
  • Desventajas: Las tablas pueden no salir en formato Markdown, menos control sobre el estilo de salida.

Pandoc

  • Ideal para: Conversiones complejas, trabajos por lotes, documentos grandes o cuando necesitas un sabor específico de Markdown.
  • Ventajas: Convierte casi cualquier cosa, soporta extensiones, maneja tablas, notas al pie, matemáticas ().
  • Desventajas: Hay que instalarlo aparte, se usa por línea de comandos o con wrapper en Python.

Aspose.HTML for Python via .NET

  • Ideal para: Entornos empresariales, cuando necesitas opciones avanzadas o integración con otras herramientas de Aspose.
  • Ventajas: Soporta varios sabores de Markdown, opciones de guardado personalizables ().
  • Desventajas: Requiere licencia comercial, configuración más compleja.

Mi consejo: Para la mayoría de los casos, empieza con markdownify o html2text. Si necesitas algo más avanzado (tablas complejas, notas al pie, o quieres Markdown estilo GitHub), Pandoc es tu mejor aliado.

Guía práctica: cómo convertir HTML a Markdown en Python

Vamos a lo que importa. Así puedes convertir HTML a Markdown en Python, incluso si no eres programador. Te muestro dos ejemplos: uno con markdownify y otro con html2text.

Ejemplo: Usando markdownify para convertir HTML a Markdown

Primero, instala la librería:

1pip install markdownify

Supón que tienes este HTML:

1<h2>Título de ejemplo</h2>
2<p>Esta es una palabra en <strong>negrita</strong> y otra en <em>cursiva</em>.</p>
3<p>Visita <a href="<http://example.com>">nuestro sitio</a> para más información.</p>

El código en Python sería:

1from markdownify import markdownify as md
2html_content = """
3<h2>Título de ejemplo</h2>
4<p>Esta es una palabra en <strong>negrita</strong> y otra en <em>cursiva</em>.</p>
5<p>Visita <a href="<http://example.com>">nuestro sitio</a> para más información.</p>
6"""
7markdown_text = md(html_content, heading_style="ATX")
8print(markdown_text)

Markdown resultante:

1## Título de ejemplo
2Esta es una palabra en **negrita** y otra en *cursiva*.
3Visita [nuestro sitio](<http://example.com>) para más información.
  • Los encabezados se convierten en ##, la negrita y cursiva se transforman, y los enlaces se formatean como [texto](url).
  • Las imágenes (<img>) se convierten en ![alt](url).
  • Las tablas se transforman en tablas Markdown (con barras y guiones).

Puedes personalizar el comportamiento de markdownify. Por ejemplo, para eliminar etiquetas <style> y <script>:

1markdown_text = md(html_content, strip=['style', 'script'])

Si necesitas algo más avanzado, puedes crear tu propio conversor para manejar etiquetas personalizadas ().

Ejemplo: Usando html2text para HTML a Markdown

Instala la librería:

1pip install html2text

Con el mismo HTML de antes:

1import html2text
2html_content = """
3<h2>Título de ejemplo</h2>
4<p>Esta es una palabra en <b>negrita</b> y otra en <i>cursiva</i>.</p>
5<p>Visita <a href="<http://example.com>">nuestro sitio</a> para más información.</p>
6"""
7converter = html2text.HTML2Text()
8converter.ignore_links = False  # Mantener enlaces
9markdown_text = converter.handle(html_content)
10print(markdown_text)

Markdown resultante:

1## Título de ejemplo
2Esta es **negrita** y otra en *cursiva*.
3Visita [nuestro sitio](<http://example.com>) para más información.
  • Por defecto, html2text corta las líneas a 78 caracteres (puedes cambiarlo con converter.body_width = 0).
  • Puedes ignorar imágenes (converter.ignore_images = True) o mostrar enlaces como referencias.
  • Las tablas pueden no salir en formato Markdown—pruébalo si esto es importante para ti.

Opciones avanzadas: personaliza tu conversión de HTML a Markdown

A veces necesitas algo más que una conversión directa. Quizá quieras excluir ciertas etiquetas HTML, manejar estilos en línea o elegir un sabor específico de Markdown (como GitHub Flavored Markdown).

Excluir o transformar elementos HTML específicos

  • markdownify: Usa el parámetro strip para eliminar etiquetas, o crea un conversor personalizado ().
  • html2text: Usa las banderas de ignorar (ignore_links, ignore_images). Para filtrados más complejos, preprocesa el HTML con BeautifulSoup.
  • Pandoc: Usa opciones de línea de comandos o filtros para controlar la conversión.
  • Aspose: Configura las opciones de guardado para elegir el sabor de Markdown ().

Manejo de estilos en línea y scripts

  • La mayoría de los conversores eliminan las etiquetas <style> y <script>—Markdown no las soporta ().
  • Si necesitas conservar fragmentos de código, asegúrate de que estén dentro de <pre><code>; los conversores los transformarán en bloques de código Markdown.

Elegir un sabor de Markdown

  • Pandoc: Especifica el sabor de salida (-to=gfm para GitHub, -to=commonmark, etc.).
  • Aspose: Usa MarkdownSaveOptions para seleccionar el sabor.
  • markdownify: No tiene soporte explícito, pero puedes ajustar la salida según tus necesidades.

Casos especiales y detalles a tener en cuenta

  • Medios embebidos: Markdown no soporta videos incrustados; puedes dejar un enlace o el HTML original.
  • Imágenes en base64: Algunos conversores incluyen los datos base64 en el Markdown (puede ser muy pesado); lo mejor es extraer y enlazar las imágenes ().
  • Tablas complejas: Si las tablas tienen colspans o elementos anidados, Markdown puede no reflejar toda la estructura—revisa y ajusta según sea necesario.

Imágenes, enlaces y tablas

Imágenes:

  • <img src="logo.png" alt="Logo"> se convierte en ![Logo](logo.png).
  • Si no quieres imágenes, usa ignore_images o strip=['img'].

Enlaces:

  • <a href="url">texto</a> se convierte en [texto](url).
  • markdownify usa enlaces en línea; html2text puede usar estilo referencia.
  • Para datos de IA, quizá quieras eliminar las URLs y quedarte solo con el texto ancla.

Tablas:

  • markdownify y Pandoc convierten tablas HTML a tablas Markdown.
  • html2text puede mostrar las tablas como texto plano.
  • Para tablas complejas, revisa el resultado y ajústalo si es necesario.

¿Y si necesitas el camino inverso? Markdown a HTML en Python

A veces necesitas convertir Markdown de vuelta a HTML—por ejemplo, para mostrar contenido en una web. Python lo hace fácil.

Usando Python-Markdown:

1import markdown
2md_text = "# Hola\nEsto es **Markdown**."
3html_output = markdown.markdown(md_text)
4print(html_output)

Resultado:

1<h1>Hola</h1>
2<p>Esto es <strong>Markdown</strong>.</p>

Otras opciones incluyen ) y markdown2. Y, por supuesto, Pandoc funciona en ambos sentidos.

Limitaciones y buenas prácticas al convertir HTML a Markdown

Seamos sinceros: la conversión de HTML a Markdown no es perfecta. Aquí tienes lo que debes tener en cuenta para obtener los mejores resultados.

Limitaciones

  • No todo se convierte bien: Scripts, estilos, formularios y elementos interactivos se pierden ().
  • Limpieza manual: A veces tendrás que ajustar el Markdown generado—corregir saltos de línea, tablas o limpiar HTML sobrante.
  • Diferencias entre sabores de Markdown: No todos los visores de Markdown soportan las mismas funciones (tablas, notas al pie, etc.). Prueba tu salida en el entorno final.

Buenas prácticas

  • Limpia tu HTML antes: Usa BeautifulSoup o una librería de legibilidad para extraer solo el contenido relevante ().
  • Automatiza para proyectos grandes: Escribe un script para convertir archivos en lote. Integra la conversión en tu flujo de trabajo de scraping o documentación.
  • Prueba y ajusta: Haz una prueba, revisa el Markdown en tu herramienta objetivo y ajusta el proceso según sea necesario.
  • Maneja errores con cuidado: Si el HTML está mal formado, pásalo primero por un limpiador.

Conclusión y puntos clave

Convertir HTML a Markdown en Python es una habilidad práctica y de gran impacto—ya sea para documentación, datos de IA o simplemente para tener notas más ordenadas. Aquí tienes el resumen:

Conclusion & Key Takeaways.png

  • Por qué es importante: Markdown es más limpio, legible y fácil de mantener que HTML. Es el idioma universal de la documentación moderna ().
  • Mejores herramientas: Para la mayoría, empieza con markdownify o html2text. Para tareas complejas, Pandoc es tu herramienta potente. Aspose es ideal para necesidades empresariales.
  • Cómo hacerlo: Instala la librería que prefieras, ejecuta un script sencillo y disfruta de un Markdown limpio. Personaliza según lo que necesites.
  • Limitaciones: Puede requerir algo de limpieza manual y no todo el HTML tiene equivalente en Markdown.
  • Próximos pasos: Prueba el código de ejemplo con tu propio HTML. Convierte en lote tus páginas antiguas. Integra la conversión en tu flujo de trabajo. Y si quieres ir más allá, explora las funciones avanzadas de Pandoc o las extensiones de Python-Markdown.

Markdown te ayuda a que tu contenido sea portable, legible y preparado para el futuro. Con Python y las herramientas adecuadas, puedes transformar hasta el HTML más caótico en algo que tu equipo—y tu yo del futuro—te agradecerán.

¡Feliz conversión! Y si quieres más trucos de automatización, scraping con IA o simplemente aprender más sobre flujos de datos, pásate por el para más guías y experiencias reales.

Preguntas frecuentes

1. ¿Cuáles son los beneficios de convertir HTML a Markdown para empresas?

Convertir HTML a Markdown mejora la legibilidad, portabilidad y mantenimiento del contenido. Es especialmente útil para documentación, toma de notas, datos de entrenamiento para IA y migrar contenido antiguo a herramientas modernas que soportan Markdown.

2. ¿Qué herramientas de Python son mejores para convertir HTML a Markdown?

Las más populares son markdownify (ideal para resultados estructurados), html2text (perfecta para conversiones rápidas y limpias), Pandoc (potente para documentos complejos) y Aspose.HTML (opción comercial para empresas).

3. ¿Cómo convierto HTML a Markdown usando Python?

Puedes usar librerías como markdownify o html2text. Instálalas con pip, pasa tu HTML y la herramienta te devuelve el Markdown. Cada una permite personalizar la conversión, como eliminar etiquetas o ajustar el formato.

4. ¿Existen limitaciones al convertir HTML a Markdown?

Sí. Elementos interactivos como scripts y formularios no se traducen bien, y tablas complejas o medios embebidos pueden requerir ajustes manuales. Además, el Markdown varía ligeramente según el visor, lo que puede afectar el resultado.

5. ¿Puedo convertir Markdown de vuelta a HTML con Python?

Por supuesto. Librerías como markdown, mistune y markdown2 permiten transformar Markdown en HTML fácilmente, ideal para integrar contenido en páginas web u otros sistemas basados en HTML.

Lecturas recomendadas:

  • )
Shuai Guan
Shuai Guan
Co-founder/CEO @ Thunderbit. Passionate about cross section of AI and Automation. He's a big advocate of automation and loves making it more accessible to everyone. Beyond tech, he channels his creativity through a passion for photography, capturing stories one picture at a time.
Topics
Html a MarkdownConvertir Html a MarkdownPython Markdown a Html
Prueba Thunderbit
Utiliza IA para extraer datos de páginas web sin esfuerzo.
Versión gratuita disponible
Soporte para español
Índice de contenidos
Extrae datos con IA
Transfiere datos fácilmente a Google Sheets, Airtable o Notion
Chrome Store Rating
PRODUCT HUNT#1 Product of the Week