Finding next occurring tag and its enclosed text with Beautiful Soup

beautifulsoup, html, python, python-2.7

Solution

Use `find_next_sibling` (If it not a sibling, use `find_next` instead)

>>> html = '''
... <html>
... <head>header
... </head>
... <blockquote>blah blah
... </blockquote>
... <p>eiaoiefj</p>
... <blockquote>capture this next
... </blockquote>
... <p></p><strong>don'tcapturethis</strong>
... <blockquote>
... capture this too but separately after "capture this next"
... </blockquote>
... </html>
... '''

>>> from bs4 import BeautifulSoup
>>> soup = BeautifulSoup(html)
>>> quote1 = soup.blockquote
>>> quote1.text
u'blah blah\n'
>>> quote2 = quote1.find_next_siblings('blockquote')
>>> quote2.text
u'capture this next\n'

Problem

I'm trying to parse text between the tag `<blockquote>`. When I type `soup.blockquote.get_text()`. I get the result I want for the first occurring blockquote in the HTML file. How do I find the next and sequential `<blockquote>` tag in the file? Maybe I'm just tired and can't find it in the documentation. Example HTML file: ``` <html> <head>header </head> <blockquote>I can get this text </blockquote> <p>eiaoiefj</p> <blockquote>trying to capture this next </blockquote> <p></p><strong>do not capture this</strong> <blockquote> capture this too but separately after "capture this next" </blockquote> </html> ``` the simple python code: ``` from bs4 import BeautifulSoup html_doc = open("example.html") soup = BeautifulSoup(html_doc) print.(soup.blockquote.get_text()) # how to get the next blockquote??? ```

Original source