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