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: