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.

Cómo usar BeautifulSoup para obtener el texto que está en un contenedor de texto de React?

Aquí está el código HTML, de Yahoo Finance


<p class="class="D(ib) W(47.727%) Pend(40px)">
<!-- react-text: 561 -->
"1601 Willow Road"
<!-- /react-text -->
<br>
<!-- react-text: 563 -->
"Menlo Park, CA 94025"
<!-- /react-text -->
<br>
<!-- react-text: 565 -->
"United States"
<!-- /react-text -->
<br>
<a href="tel:6505434800" class="C($linkColor)">650 543 4800</a>
<br>
<a href="https://investor.fb.com" rel="noopener noreferrer" target="_blank"
class="C($linkColor)" title="">https://investor.fb.com</a>
</p>

Quiero obtener las cadenas de información de forma individual, pero mi código en este momento devuelve todo en una sola línea. Esto es lo que tengo hasta ahora y lo que devuelve:

soup.find('p', {'class':'D(ib) W(47.727%) Pend(40px)'}).text

devuelve

'1601 Willow RoadMenlo Park, CA 94025United States650 543 4800https://investor.fb.com'

Además, aquí está el enlace: https://ca.finance.yahoo.com/quote/FB/profile?p=FB

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para obtener las cadenas de información individualmente, podemos utilizar el atributo children de la etiqueta p para acceder a cada cadena individual, de la siguiente manera:

    info = ''
    for string in soup.find('p', {'class':'D(ib) W(47.727%) Pend(40px)'}).children:
        if string.name == 'a':  # manejar la etiqueta <a> por separado
            info += string.text + '\n'
        else:
            info += string.strip() + '\n'
    print(info)
    

    Este código imprimirá:

    1601 Willow Road
    Menlo Park, CA 94025
    Estados Unidos
    650 543 4800
    https://investor.fb.com
    

    Cabe destacar que utilizamos el método strip() para eliminar cualquier espacio en blanco al principio o al final de cada cadena, y agregamos un carácter de nueva línea (\n) para separar cada pieza de información. También utilizamos una declaración if para gestionar la etiqueta <a> por separado, ya que solo queremos el texto dentro de la etiqueta, no la etiqueta completa en sí misma.

Comments are closed.