Open In App

How to insert a new tag into a BeautifulSoup object?

Improve
Improve
Like Article
Like
Save
Share
Report

In this article, we will see how to insert a new tag into a BeautifulSoup object. See the below examples to get a better idea about the topic.

Example:

HTML_DOC :

 “””

             <html>

              <head>

                  <title> Table Data </title>

              </head>

              <body>

                   <div> This is sample div 1 </div>

                   <div> This is sample div 2 </div>

              </body>

            </html>

“””

new_tag : <div> This is new div </div>

Modified BeautifulSoup Object :

“””

             <html>

             <head>

                 <title> Table Data </title>

             </head>

             <body>

                  <div> This is sample div 1 </div>

                  <div> This is sample div 2 </div>

                  <div> This is new div </div>

             </body>

           </html>

“””

Required Modules:

BeautifulSoup (bs4): It is a Python library for pulling data out of HTML and XML files. This module does not come built-in with Python. Run the following command in the terminal to install this library-

pip install bs4
or
pip install beautifulsoup4

Creating a new tag using new_tag() method :

A new tag can be created by calling BeautifulSoup’s inbuilt function new_tag().

Inserting a new tag using the append() method :

The new tag is appended to the end of the parent tag.

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)


Output:

Inserting a new tag using insert() method :

Using this method, the new tag is not appended to the end of the parent tag but is inserted at a given numeric position. It works the same as the .insert() method of the Python list. For example, if we want to insert the new div between div 1 and div 2, we can use 

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

This would insert the new div at position 2 i.e, between the old 2 divs.

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)


Output:

Inserting a new tag using insert_before() method :

insert_before() method is used to insert a new tag just before the given tag.

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)


Output:

Inserting a new tag using insert_after() method :

insert_after() method is used to insert a new tag just after the given tag.

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)


Output:



Last Updated : 16 Mar, 2021
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads