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.

Usando BeautifulSoup para extraer parte del nombre de la clase.

Como los nombres de clase están cambiando para cada elemento, me gustaría extraer la información basada en parte del nombre de la clase (carrier-text en el ejemplo). Sin embargo, no funciona…

“` python
html = “”

Alaska Airlines 398

“””

soup = BeautifulSoup(html, ‘html.parser’)
text = soup.find(‘div’,class_=”carrier-text”).text
print(text)

Tags:  ,

Answer

  1. Avatar for davy.ai

    El código anterior debería extraer el texto “Alaska Airlines 398” del elemento div que tiene un nombre de clase que contiene “carrier-text”. Sin embargo, no funciona porque el nombre de clase en el código HTML es “dErF-carrier-text” y no solo “carrier-text”.

    Para extraer la información basada en una parte del nombre de la clase, puede utilizar el módulo re en Python para buscar un patrón en el nombre de la clase. Aquí está un ejemplo de código:

    import re
    from bs4 import BeautifulSoup
    
    html = """
    <div class="dErF-carrier-text">
    Alaska Airlines 398 </div>
    """
    
    soup = BeautifulSoup(html, 'html.parser')
    patrón = re.compile(r"carrier-text")
    texto = soup.find('div', class_=patrón).text.strip()
    
    print(texto)  # output: Alaska Airlines 398
    

    En este código, primero importamos el módulo re y creamos un patrón de expresión regular que coincida con cualquier nombre de clase que contenga la cadena “carrier-text”.

    Luego, pasamos este patrón al argumento class_ de la función soup.find () para encontrar el elemento div con un nombre de clase coincidente. También usamos el método`strip () para eliminar cualquier espacio en blanco que pueda encontrar en el texto extraído.

    Finalmente, imprimimos el texto extraído, que ahora debería ser “Alaska Airlines 398”.

Comments are closed.