How to insert a new tag into a BeautifulSoup object? - GeeksforGeeks

16 Mar, 2021
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 Modulefrom bs4 import BeautifulSoup  # HTML DocumentHTML_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 tagdef 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 CalladdTag(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 Modulefrom bs4 import BeautifulSoup  # HTML DocumentHTML_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 tagdef 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 CalladdTag(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 Modulefrom bs4 import BeautifulSoup  # HTML DocumentHTML_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 tagdef 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 CalladdTag(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 Modulefrom bs4 import BeautifulSoup  # HTML DocumentHTML_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 tagdef 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 CalladdTag(HTML_DOC)
Output:
Picked
Python BeautifulSoup
Python bs4-Exercises
Python
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
How to Install PIP on Windows ?
Check if element exists in list in Python
How To Convert Python Dictionary To JSON?
Python Classes and Objects
How to drop one or multiple columns in Pandas Dataframe
Defaultdict in Python
Python | Get unique values from a list
Python | os.path.join() method
Create a directory in Python
Python | Pandas dataframe.groupby()