¿Cómo insertar una nueva etiqueta en un objeto BeautifulSoup?

En este artículo, veremos cómo insertar una nueva etiqueta en un objeto BeautifulSoup. Vea los siguientes ejemplos para tener una mejor idea sobre el tema.

Ejemplo:

HTML_DOC:

 “””

             <html>

              <cabeza>

                  <title> Datos de la tabla </title>

              </cabeza>

              <cuerpo>

                   <div> Esta es la muestra del div 1 </div>

                   <div> Esta es la muestra div 2 </div>

              </cuerpo>

            </html>

“””

new_tag : <div> Este es un nuevo div </div>

Objeto BeautifulSoup modificado:

“””

             <html>

             <cabeza>

                 <title> Datos de la tabla </title>

             </cabeza>

             <cuerpo>

                  <div> Esta es la muestra del div 1 </div>

                  <div> Esta es la muestra div 2 </div>

                  <div> Este es un nuevo div </div>

             </cuerpo>

           </html>

“””

Módulos Requeridos:

BeautifulSoup (bs4): Ejecute el siguiente comando en la terminal para instalar esta biblioteca-

pip install bs4
or
pip install beautifulsoup4

Creando una nueva etiqueta usando el método new_tag() :

Se puede crear una nueva etiqueta llamando a la función incorporada de BeautifulSoup new_tag() .

Insertar una nueva etiqueta usando el método append() :

La nueva etiqueta se agrega al final de la etiqueta principal.

Python3

# Import Module
from bs4 import BeautifulSoup
  
# HTML Document
HTML_DOC = """
              <html>
               <head>
                   <title> Add new Tag </title>
               </head>
               <body>
                    <div> This is sample div 1 </div>
                    <div> This is sample div 2 </div>
               </body>
             </html>
            """
  
# Function to append new tag
def addTag(html):
  
    # parse html content
    soup = BeautifulSoup(html, "html.parser")
  
    # create new tag
    # Here we are creating a new div
    new_div = soup.new_tag("div")
  
    # Adding content to div
    new_div.string = " This is new div "
  
    # Appending new div to html tree
    soup.html.body.append(new_div)
  
    # Printing the modified object
    print(soup)
  
  
# Function Call
addTag(HTML_DOC)

Producción:

Insertar una nueva etiqueta usando el método insert() :

Con este método, la nueva etiqueta no se agrega al final de la etiqueta principal, sino que se inserta en una posición numérica dada. Funciona igual que el método .insert() de la lista de Python. Por ejemplo, si queremos insertar el nuevo div entre div 1 y div 2, podemos usar 

soup.html.body.insert(2, new_div)

Esto insertaría el nuevo div en la posición 2, es decir, entre los 2 div anteriores.

Python3

# Import Module
from bs4 import BeautifulSoup
  
# HTML Document
HTML_DOC = """
              <html>
               <head>
                   <title> Add new Tag </title>
               </head>
               <body>
                    <div> This is sample div 1 </div>
                    <div> This is sample div 2 </div>
               </body>
             </html>
            """
  
# Function to inset new tag
def addTag(html):
  
    # parse html content
    soup = BeautifulSoup(html, "html.parser")
  
    # create new tag
    # Here we are creating a new div
    new_div = soup.new_tag("div")
  
    # Adding content to div
    new_div.string = " This is new div "
  
    # Inserting new div to html tree
    # Here, 2 represents the position
    # where we want to insert the new tag
    soup.html.body.insert(2, new_div)
  
    # Printing the modified object
    print(soup)
  
  
# Function Call
addTag(HTML_DOC)

Producción:

Insertar una nueva etiqueta usando el método insert_before() :

El método insert_before() se usa para insertar una nueva etiqueta justo antes de la etiqueta dada.

Python3

# Import Module
from bs4 import BeautifulSoup
  
# HTML Document
HTML_DOC = """
              <html>
               <head>
                   <title> Add new Tag </title>
               </head>
               <body>
                    <div> This is sample div 1 </div>
                    <div> This is sample div 2 </div>
               </body>
             </html>
            """
  
# Function to insert new tag before given tag
def addTag(html):
  
    # parse html content
    soup = BeautifulSoup(html, "html.parser")
  
    # create new tag
    # Here we are creating a new div
    new_div_before = soup.new_tag("div")
  
    # Adding content to div
    new_div_before.string = " This is new div before div 1 "
  
    # Inserting new tag before div 1
    soup.html.body.div.insert_before(new_div_before)
  
    # Printing the modified object
    print(soup)
  
  
# Function Call
addTag(HTML_DOC)

Producción:

Insertar una nueva etiqueta usando el método insert_after() :

El método insert_after() se usa para insertar una nueva etiqueta justo después de la etiqueta dada.

Python3

# Import Module
from bs4 import BeautifulSoup
  
# HTML Document
HTML_DOC = """
              <html>
               <head>
                   <title> Add new Tag </title>
               </head>
               <body>
                    <div> This is sample div 1 </div>
                    <div> This is sample div 2 </div>
               </body>
             </html>
            """
  
# Function to insert new tag after given tag
def addTag(html):
  
    # parse html content
    soup = BeautifulSoup(html, "html.parser")
  
    # create new tag
    # Here we are creating a new div
    new_div_after = soup.new_tag("div")
  
    # Adding content to div
    new_div_after.string = " This is new div after div 1 "
  
    # Inserting new tag after div 1
    soup.html.body.div.insert_after(new_div_after)
  
    # Printing the modified object
    print(soup)
  
  
# Function Call
addTag(HTML_DOC)

Producción:

Publicación traducida automáticamente

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