Saltar al contenido

Raspado de texto en etiquetas h3 y div usando beautifulSoup, Python

Solución:

Puede utilizar selectores de CSS para encontrar los datos que necesita. En tu caso div > h3 ~ div encontraras todo div elementos que están directamente dentro de un div elemento y son precedidos por un h3 elemento.

import bs4

page= """
<div class="box effect">
<div class="row">
<div class="col-lg-10">
    <h3>HEADING</h3>
    <div><i class="fa user"></i>&nbsp;&nbsp;NAME</div>
    <div><i class="fa phone"></i>&nbsp;&nbsp;MOBILE</div>
    <div><i class="fa mobile-phone fa-2"></i>&nbsp;&nbsp;&nbsp;NUMBER</div>
    <div><i class="fa address"></i>&nbsp;&nbsp;&nbsp;XYZ_ADDRESS</div>
</div>
</div>
</div>
"""

soup = bs4.BeautifulSoup(page, 'lxml')

# find all div elements that are inside a div element
# and are proceeded by an h3 element
selector="div > h3 ~ div"

# find elements that contain the data we want
found = soup.select(selector)

# Extract data from the found elements
data = [x.text.split(';')[-1].strip() for x in found]

for x in data:
    print(x)

Editar: para raspar el texto en el encabezado.

heading = soup.find('h3') 
heading_data = heading.text
print(heading_data)

Editar: O puede obtener el encabezado y otros elementos div a la vez usando un selector como este: div.col-lg-10 > *. Esto encuentra todos los elementos dentro de un div elemento que pertenece a col-lg-10 clase.

soup = bs4.BeautifulSoup(page, 'lxml')

# find all elements inside a div element of class col-lg-10
selector="div.col-lg-10 > *"

# find elements that contain the data we want
found = soup.select(selector)

# Extract data from the found elements
data = [x.text.split(';')[-1].strip() for x in found]

for x in data:
    print(x)
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *