Diferencia entre find y find_all en BeautifulSoup – Python

BeautifulSoup es una de las bibliotecas más comunes en Python que se utiliza para navegar, buscar y extraer datos de páginas web HTML o XML. Los métodos más comunes usados ​​para encontrar cualquier cosa en la página web son find() y find_all() . Sin embargo, hay una ligera diferencia entre estos dos, analicémoslos en detalle.

método buscar()

El método de búsqueda se utiliza para encontrar la primera etiqueta con el nombre o id especificado y devolver un objeto de tipo bs4.

Sintaxis: find_syntax=soup.find(“#Nombre del widget”, {“id”:”#Id nombre del widget en el que desea editar”}).get_text()

Ejemplo:

Por ejemplo, considere esta página web HTML simple que tiene diferentes etiquetas de párrafo.

HTML

<!DOCTYPE html>
<html>
    
 <head>
   Geeks For Geeks
 </head>
    
 <body>
 <div>
     <p id="vinayak">King</p>
  
     <p id="vinayak1">Prince</p>
  
     <p id="vinayak2">Queen</p>
  
 </div>
 <p id="vinayak3">Princess</p>
  
  </body>
  
</html>

Para obtener el texto King, usamos el método find.

Python

# Find example
  
# Import the libraries BeautifulSoup
# and os
from bs4 import BeautifulSoup as bs
import os
  
# Remove the last segment of the path
base=os.path.dirname(os.path.abspath(__file__))
  
# 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')
  
# Obtain the text from the widget after 
# finding it
find_example=soup.find("p", {"id":"vinayak"}).get_text()
  
# Printing the text obtained received 
# in previous step
print(find_example)

Producción:

método find_all()

El método find_all se usa para encontrar todas las etiquetas con el nombre o id de etiqueta especificado y devolverlas como una lista de tipo bs4.

Sintaxis:

para la palabra en sopa.find_all(‘id’):

     find_all_syntax=palabra.get_text()

     imprimir (find_all_syntax)

Ejemplo:

Por ejemplo, considere esta página web HTML simple que tiene diferentes etiquetas de párrafo.

HTML

<!DOCTYPE html>
<html>
    
 <head>
   Geeks For Geeks
 </head>
    
 <body>
 <div>
     <p id="vinayak">King</p>
  
     <p id="vinayak1">Prince</p>
  
     <p id="vinayak2">Queen</p>
  
 </div>
 <p id="vinayak3">Princess</p>
  
  </body>
    
</html>

Para obtener todo el texto, es decir, Rey, Príncipe, Reina, Princesa, usamos el método find_all.

Python

# find_all example
  
# Import the libraries BeautifulSoup
# and os
from bs4 import BeautifulSoup as bs
import os
  
# Remove the last segment of the path
base=os.path.dirname(os.path.abspath(__file__))
  
# 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')
  
# Construct a loop to find all the
# p tags
for word in soup.find_all('p'):
  
    # Obtain the text from the received
    # tags
    find_all_example=word.get_text()
  
    # Print the text obtained received 
    # in previous step
    print(find_all_example)

Producción:

Tabla de diferencias entre find y find_all

S. No.       

encontrar

encuentra todos

1

find se utiliza para devolver el resultado cuando el elemento buscado se encuentra en la página. 

find_all se utiliza para devolver todas las coincidencias después de escanear todo el documento.

2

Se utiliza para obtener simplemente la primera etiqueta del objeto HTML entrante cuya condición se cumple.  

Se utiliza para obtener todos los objetos HTML entrantes cuya condición se cumple.  

3

El tipo de retorno de búsqueda es <clase ‘bs4.element.Tag’>.

El tipo de devolución de find_all es <clase ‘bs4.element.ResultSet’>

4

Podemos imprimir solo la primera búsqueda como salida.

Podemos imprimir cualquier búsqueda, es decir, segunda, tercera, última, etc. o todas las búsquedas como salida.

5

Prototipo: buscar (etiqueta, atributos, recursivo, texto, palabras clave)

Prototipo: findAll(etiqueta, atributos, recursivo, texto, límite, palabras clave)

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 *