Beautifulsoup – Tipos de objetos

Prerrequisitos: BeautifulSoup

En este artículo, discutiremos diferentes tipos de objetos en Beautifullsoup. Cuando la string o el documento HTML se proporciona en el constructor de BeautifulSoup, este constructor convierte este documento en diferentes objetos de Python. 

Los cuatro objetos principales e importantes son: 

  1. HermosaSopa
  2. Etiqueta
  3. string navegable
  4. Comentarios

1. Objeto BeautifulSoup:  El objeto BeautifulSoup representa el documento analizado como un todo. Por lo tanto, es el documento completo que estamos tratando de raspar. Para la mayoría de los propósitos, puede tratarlo como un objeto Tag.

Python3

# importing the module
from bs4 import BeautifulSoup
 
# parsing the document
soup = BeautifulSoup('''<h1>Geeks for Geeks</h1>''',
                     "html.parser")
 
print(type(soup))

Producción:

<class 'bs4.BeautifulSoup'>

2. Objeto de etiqueta: el objeto de etiqueta corresponde a una etiqueta XML o HTML en el documento original. Además, este objeto generalmente se usa para extraer una etiqueta de todo el documento HTML. Además, Beautiful Soup no es un cliente HTTP, lo que significa que para descartar sitios web en línea, primero debe descargarlos usando el módulo de requests y luego entregárselos a Beautiful Soup para eliminarlos. Además, este objeto devuelve la primera etiqueta encontrada si su documento tiene varias etiquetas con el mismo nombre.

Python3

# Import Beautiful Soup
from bs4 import BeautifulSoup
   
# Initialize the object with an HTML page
soup = BeautifulSoup('''
    <html>
        <b>Geeks for Geeks</b>
    </html>
    ''', "html.parser")
   
# Get the tag
tag = soup.b
   
# Print the output
print(type(tag))

Producción:

<class 'bs4.element.Tag'>

La etiqueta contiene muchos métodos y atributos. Y dos características importantes de una etiqueta son su nombre y sus atributos.

  • Nombre
  • Atributos

# Nombre :

Se puede acceder al nombre de la etiqueta a través de ‘.name’ como sufijo.

Sintaxis: etiqueta.nombre

Retorno: el tipo de etiqueta que es.

También podemos cambiar el nombre de la etiqueta.

Python3

# Import Beautiful Soup
from bs4 import BeautifulSoup
   
# Initialize the object with an HTML page
soup = BeautifulSoup('''
    <html>
        <b>Geeks for Geeks</b>
    </html>
    ''', "html.parser")
   
# Get the tag
tag = soup.b
   
# Print the output
print(tag.name)
 
# changing the tag
tag.name = "Strong"
print(tag)

Producción:

b
<Strong>Geeks for Geeks</Strong>

 # Atributos:

Ejemplo 1: Cualquier cosa que NO sea una etiqueta, es básicamente un atributo y debe contener un valor. Un objeto de etiqueta puede tener muchos atributos y se puede acceder a él accediendo a las claves o accediendo directamente a través del valor. También podemos modificar los atributos y su valor.

Python3

# Import Beautiful Soup
from bs4 import BeautifulSoup
   
# Initialize the object with an HTML page
soup = BeautifulSoup('''
    <html>
        <b class="gfg">Geeks for Geeks</b>
    </html>
    ''', "html.parser")
   
# Get the tag
tag = soup.b
 
print(tag["class"])
 
# modifying class
tag["class"] = "geeks"
print(tag)
 
# delete the class attributes
del tag["class"]
print(tag)

Producción:

['gfg']
<b class="geeks">Geeks for Geeks</b>
<b>Geeks for Geeks</b>

Ejemplo 2: un documento puede contener atributos de varios valores y se puede acceder a ellos mediante un par clave-valor.

Python3

# Import Beautiful Soup
from bs4 import BeautifulSoup
 
# Initialize the object with an HTML page
# soup for multi_valued attributes
soup = BeautifulSoup('''
    <html>
        <b class="gfg geeks">Geeks for Geeks</b>
    </html>
    ''', "html.parser")
 
# Get the tag
tag = soup.b
 
print(tag["class"])

Producción:

['gfg', 'geeks']

3. Objeto NavigableString: una string corresponde a un fragmento de texto dentro de una etiqueta. Beautiful Soup usa la clase NavigableString para contener estos fragmentos de texto.

Sintaxis:   <tag> String aquí </tag>

Python3

# Import Beautiful Soup
from bs4 import BeautifulSoup
   
# Initialize the object with an HTML page
soup = BeautifulSoup('''
    <html>
        <b>Geeks for Geeks</b>
    </html>
    ''', "html.parser")
   
# Get the tag
tag = soup.b
 
# Get the string inside the tag
string = tag.string
   
# Print the output
print(type(string))

Producción:

<class 'bs4.element.NavigableString'>

4. Objeto de comentario: el objeto de comentario es solo un tipo especial de NavigableString y se usa para hacer que el código base sea más legible.

Python3

# Import Beautiful Soup
from bs4 import BeautifulSoup
   
# Create the document
markup = "<b><!-- COMMENT --></b>"
   
# Initialize the object with the document
soup = BeautifulSoup(markup, "html.parser")
   
# Get the whole comment inside b tag
comment = soup.b.string
   
# Print the type of the comment
print(type(comment))

Producción:

<class 'bs4.element.Comment'>

Publicación traducida automáticamente

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