es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Python – Convirtiendo enlaces HTML a texto plano formateado

¿Cómo puedo convertir los hipervínculos de HTML en texto plano con Python que luzcan así:



Hola mundo, es tiempo de foo bar

Mi código actual se ve así, pero este paquete parece no hacer el trabajo correctamente, ya que solo convierte los elementos de texto HTML normales a texto plano sin el enlace:

from html2text import html2text

text = html2text("<p>Hello world, it's <a href='https://google.com'>foo bar time</a></p>")
print(text)

Resultado que quería: “Hola mundo, es tiempo de foo bar – https://google.com/”

Resultado que obtuve: “Hola mundo, es tiempo de foo bar”

Sería de gran ayuda encontrar una solución.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Una solución para convertir los hipervínculos HTML en texto plano con Python es utilizar el módulo BeautifulSoup. Aquí tienes un ejemplo de cómo hacerlo:

    from bs4 import BeautifulSoup
    
    html = "<p>¡Hola mundo, es <a href="https://google.com">hora de foo bar</a></p>"
    
    soup = BeautifulSoup(html, 'html.parser')
    link = soup.a
    text = link.contents[0]
    
    resultado = f"{text} - {link['href']}"
    print(resultado)
    
    # Resultado: "hora de foo bar - https://google.com"
    

    Primero, creamos un objeto BeautifulSoup pasando la cadena HTML y especificando el analizador. Luego, utilizamos la etiqueta a para seleccionar el elemento del hipervínculo. Obtenemos el texto plano accediendo al atributo contents de la etiqueta a, que devuelve una lista de sus elementos secundarios; en este caso, solo hay un hijo, que es el texto plano “hora de foo bar”. Finalmente, combinamos el texto plano y la URL del enlace utilizando el formato de cadena para obtener el resultado deseado.

Comments are closed.