Beautiful Soup | next_sibling property
Start your free 7-days trial now!
In Beautiful Soup, the next_sibling property of a tag or a string returns the next tag or string under the same parent.
Examples
Basic usage
Consider the following HTML document:
        
        
            
                
                
                    my_html = "<p><b>Alex</b><i>is great</i></p>"soup = BeautifulSoup(my_html)
                
            
            
        
    Let's get the next_sibling of <b>Alex</b>:
        
        
            
                
                
                    b_alex.next_sibling
                
            
            <i>is great</i>
        
    This tell us that the next node of <b>Alex</b> is  <i>is great</i>, which we know is true since <i>is great</i> is the next element under the same p tag.
If the next node does not exist, then a None is returned:
        
        
            
                
                
                    b_alex.next_sibling.next_sibling
                
            
            None
        
    Unexpected behaviour
Consider the following HTML document:
        
        
            
                
                
                    my_html = """       <div>             <p>Alex</p>             <p>Bob</p>       </div>"""soup = BeautifulSoup(my_html)
                
            
            
        
    Let's get the next_sibling of <p>Alex</p>:
        
        
            
                
                
                    p_alex = soup.find("p")p_alex.next_sibling
                
            
            '\n'
        
    The result may be surprising for those who expected to see <p>Bob</p>. Such a result arises because there is a new line character \n between <p>Alex</p> and <p>Bob</p>. To get to Bob, then, you would need to call the next_sibling twice:
        
        
            
                
                
                    p_alex = soup.find("p")p_alex.next_sibling.next_sibling
                
            
            <p>Bob</p>
        
    If you just wanted to access the next sibling element, then the better alternative would be to call the find_next_sibling() method:
        
        
            
                
                
                    p_alex = soup.find("p")p_alex.find_next_sibling()
                
            
            <p>Bob</p>
        
    