BeautifulSoup – Encuentra todos los <li> en <ul>

Prerrequisitos: Beautifulsoup

Beautifulsoup es un módulo de Python utilizado para el web scraping. En este artículo, discutiremos cómo se pueden recuperar los contenidos de las etiquetas <li> de <ul> usando Beautifulsoup. 

Módulos necesarios:

  • bs4: Beautiful Soup (bs4) es una biblioteca de Python para extraer datos de archivos HTML y XML.
  • requests: las requests le permiten enviar requests HTTP/1.1 de forma extremadamente sencilla. Este módulo tampoco viene integrado con Python.

Acercarse

  • Importar los módulos
  • Proporcione una URL que tenga etiquetas ul y li
  • Hacer las requests
  • Crea el objeto beautifulsoup
  • Encuentre las etiquetas requeridas
  • Recuperar el contenido bajo li

Debajo del código, el fragmento HTML contiene un cuerpo con etiquetas ul y li que ha obtenido el objeto beautifulsoup.

Método 1: Usar descendientes y find()

En este método, usamos el atributo de descendientes presente en beautifulsoup que básicamente devuelve un objeto iterador de lista que tiene todos los descendientes/hijos de la etiqueta principal, aquí el padre es la etiqueta <ul>.

Primero, importe los módulos requeridos, luego proporcione la URL y cree su objeto de requests que será analizado por el objeto beautifulsoup. Ahora, con la ayuda de la función find() en beautifulsoup, encontraremos las etiquetas <body> y sus correspondientes <ul>. Después de esto, el atributo de descendientes nos dará el objeto iterador de lista que se necesita para volver a convertirlo en lista. Esta lista tiene un siguiente elemento de línea, las etiquetas con texto y, finalmente, el único texto. Entonces, imprimiremos cada segundo elemento sucesivo de la lista.

Ejemplo:

Python3

# importing the modules
import requests
from bs4 import BeautifulSoup
  
# providing url
url = "https://auth.geeksforgeeks.org/user/adityaprasad1308/articles"
  
# creating requests object
html = requests.get(url).content
  
# creating soup object
data = BeautifulSoup(html, 'html.parser')
  
# finding parent <ul> tag
parent = data.find("body").find("ul")
  
# finding all <li> tags
text = list(parent.descendants)
  
# printing the content in <li> tag
print(text)
for i in range(2, len(text), 2):
    print(text[i], end=" ")

Producción:

Método 2: Usar find_all()

El enfoque es el mismo que el del ejemplo anterior, pero en lugar de encontrar el cuerpo buscaremos etiquetas ul y luego encontraremos todas las etiquetas li con la ayuda de la función find_all() que toma el nombre de la etiqueta como argumento y devuelve todas las etiquetas li. Después de esto, simplemente iteramos sobre todas las etiquetas <li> y, con la ayuda del atributo de texto, imprimiremos el texto presente en la etiqueta <li>.

Ejemplo:

Python3

# importing the modules
import requests
from bs4 import BeautifulSoup
  
# providing url
url = 'https://auth.geeksforgeeks.org/user/adityaprasad1308/articles'
  
# creating request object
req = requests.get(url)
  
# creating soup object
data = BeautifulSoup(req.text, 'html')
  
# finding all li tags in ul and printing the text within it
data1 = data.find('ul')
for li in data1.find_all("li"):
    print(li.text, end=" ")

Producción:

Publicación traducida automáticamente

Artículo escrito por adityaprasad1308 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 *