BeautifulSoup – Encuentra todos los hijos de un elemento

Es posible que haya visto que hay varios sitios web que son complejos y largos, desde los cuales buscar cualquier cosa se vuelve difícil. Para facilitar nuestro trabajo de búsqueda, modificación e iteración, Python nos brinda algunas bibliotecas integradas, como Requests, Xml, Beautiful Soup, Selenium, Scrapy, etc. Entre todas estas bibliotecas disponibles, Beautiful Soup es la que realiza web scrapping comparativamente. más rápido que los otros disponibles en Python. A veces, ocurren situaciones en las que necesitamos encontrar a todos los hijos de un elemento con la ayuda de Beautiful Soup. Si no lo sabe, cómo encontrarlos. ¡No te preocupes! En este artículo, discutiremos el procedimiento para encontrar los elementos secundarios de un elemento.

Sintaxis:

unordered_list=soup.find(“#Widget Name”, {“id”:”#Id nombre del elemento del que desea encontrar elementos secundarios “})

niños = lista_desordenada.findChildren()

A continuación se muestra el archivo HTML para su consideración:

HTML

<!DOCTYPE html>
<html>
 <head>
  My First Heading
 </head>
 <body>
  <p id="para">
   Vinayak Rai
  </p>
  
 <ul id="list">Fruits
  <li>Apple</li>
  <li>Banana</li>
  <li>Mango</li>
 </ul>
 </body>
</html>

Implementación paso a paso:

Paso 1: Primero, importa las bibliotecas Beautiful Soup y os.

Python3

from bs4 import BeautifulSoup as bs
import os

Paso 2: ahora, elimine el último segmento de la ruta dando a abspath el mismo nombre que le dio a su archivo de Python.

Python3

base=os.path.dirname(os.path.abspath(#Name of your Python file))

Paso 3: luego, abra el archivo HTML que desea abrir.

Python3

html=open(os.path.join(base, '#Name of HTML file'))

Paso 4: Análisis de HTML en Beautiful Soup.

Python3

soup=bs(html, 'html.parser')

Paso 5: Además, proporcione la ubicación de un elemento para el que desea encontrar elementos secundarios

Python3

unordered_list=soup.find("#Widget Name", 
      {"id":"#Id name of element of which you want to find children "})

Paso 6: A continuación, encuentre todos los elementos secundarios de un elemento.

Python3

children = unordered_list.findChildren()

Paso 7: Finalmente, imprime todos los hijos de un elemento que hayas encontrado en el último paso.

Python3

for child in children:
    print (child)

A continuación se muestra la implementación completa:

Python

# Python program to find all the children
# of an element using Beautiful Soup
  
# Import the libraries BeautifulSoup and os
from bs4 import BeautifulSoup as bs
import os
  
# Remove the last segment of the path 
# Give same name in abspath as given to Python file
base = os.path.dirname(os.path.abspath('run.py'))
  
# Open the HTML in which you want to make changes
html = open(os.path.join(base, 'gfg.html'))
  
# Parse HTML file in Beautiful Soup
soup = bs(html, 'html.parser')
  
# Give location where text is stored which you wish to alter
unordered_list = soup.find("ul", {"id": "list"})
  
# Find children of an element
children = unordered_list.findChildren()
  
# Print all children of an element
for child in children:
    print(child)

Producción:

Publicación traducida automáticamente

Artículo escrito por vin8rai y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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