En este artículo, veremos cómo navegar lateralmente por el árbol de análisis de beautifulsoup. Navegar de lado significa que las etiquetas están en el mismo nivel. Vea el siguiente ejemplo para tener una mejor idea.
<a> <b></b> <c></c> </a>
En el ejemplo anterior, las etiquetas <b> y <c> están al mismo nivel.
Instalación de Módulos Requeridos:
bs4: Necesitamos instalar manualmente la biblioteca BeautifulSoup en nuestras máquinas, ya que no se proporciona de forma predeterminada en la configuración del lenguaje Python. Así que vamos a instalarlo ejecutando el siguiente comando en nuestros sistemas:
pip install bs4
lxml: lxml es un vínculo maduro entre las bibliotecas libxml2 y libxlst de Python, con la ayuda de la API de ElementTree, proporciona un acceso seguro y conveniente a esas bibliotecas.
pip install lxml
Entendamos con la implementación:
Prettify(): la función Prettify() en BeautifulSoup nos permite observar cómo se anidan las etiquetas en el documento.
Sintaxis: (Variable BeautifulSoup).prettify()
Ejemplo :
Python3
import bs4 sibling_soup = bs4.BeautifulSoup("<a><b>Welcome to Geekforgeeks</b>\ <c>Hello geeks</c></b></a>", 'html.parser') print(sibling_soup.prettify())
Producción:
<a> <b> Welcome to Geekforgeeks </b> <c> Hello geeks </c> </a>
Navegando de lado
Podemos navegar lateralmente en un documento usando .next_sibling y .previous_sibling de BeautifulSoup en Python, estas dos funciones en python nos permiten navegar entre etiquetas que están en el mismo nivel del árbol.
Veamos mejor el concepto a través de un ejemplo probado:
Considere un documento de muestra:
Python3
# For importing BeautifulSoup import bs4 # initiating variable of BeautifulSoup sibling_of_soup = bs4.BeautifulSoup("<a><b>CPPSecrets</b><c><strong>\ C++ Python Professional HandBook Guide</strong></b></a>", 'lxml') # To print contents in the initiated BeautifulSoup print(sibling_of_soup.prettify())
Producción:
En el código anterior, podemos notar claramente que las etiquetas <b> y <c> están en el mismo nivel y también son elementos secundarios de la misma etiqueta, por lo tanto, podemos clasificarlos como hermanos.
Ahora, podemos navegar entre las etiquetas hermanas <b> y <c> ya que ambas son hermanas usando:
- .proximo hermano()
- .anterior_hermano:
1. Navegando usando .next_sibling:
Python3
import bs4 sibling_of_soup = bs4.BeautifulSoup("<a><b>CPPSecrets</b><c><strong>\ C++ Python Professional HandBook Guide</strong></b></a>",'lxml') # printing contents in BeautifulSoup Variable print(sibling_of_soup.b.next_sibling)
Producción:
En el código anterior, nos da el siguiente resultado, es decir, el elemento en la etiqueta c como el siguiente hermano de la etiqueta b es c, por lo tanto, el elemento en la etiqueta c será navegado e impreso.
Si escribimos una declaración de impresión para la etiqueta c como:
Python3
import bs4 sibling_of_soup = bs4.BeautifulSoup("<a><b>CPPSecrets</b><c><strong>\ C++ Python Professional HandBook Guide</strong></b></a>",'lxml') # Implementing Navigation on sibling print(sibling_of_soup.c.next_sibling)
Producción:
En el código anterior, el resultado generado es «Ninguno» ya que no hay una etiqueta presente después de c.
2. Navegación usando .previous_sibling:
Python3
import bs4 sibling_of_soup = bs4.BeautifulSoup("<a><b>CPPSecrets</b><c><strong>\ C++ Python Professional print(sibling_of_soup.c.previous_sibling) print(sibling_of_soup.b.previous_sibling)
Producción:
En el código, .previous_sibling en la etiqueta c, genera un elemento en la etiqueta b ya que la etiqueta del hermano anterior es b, pero si implementamos .previous_sibling en la etiqueta b, genera el resultado «Ninguno» ya que no hay ningún hermano que haya ocurrido anterior a la etiqueta b.
Publicación traducida automáticamente
Artículo escrito por ravi.geek24 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA