Итерация через DOM с помощью BeautifulSoup / Python

У меня этот DOM:

Main Section

Bla bla bla

Subsection

Some more info

Subsection 2

Even more info!

Main Section 2

bla

Subsection

Some more info

Subsection 2

Even more info!

Я хотел бы сгенерировать iterator, который возвращает «Main Section», «Bla bla bla», «Subsection» и т. Д. Есть ли способ сделать это с помощью BeautifulSoup?

Вот один из способов сделать это. Идея состоит в том, чтобы итерации по основным разделам (тег h2 ) и для каждого тега h2 перебирать братья и сестры до следующего тега h2 :

 from bs4 import BeautifulSoup, Tag data = """

Main Section

Bla bla bla

Subsection

Some more info

Subsection 2

Even more info!

Main Section 2

bla

Subsection

Some more info

Subsection 2

Even more info!

""" soup = BeautifulSoup(data) for main_section in soup.find_all('h2'): for sibling in main_section.next_siblings: if not isinstance(sibling, Tag): continue if sibling.name == 'h2': break print sibling.text print "-------"

печатает:

 Bla bla bla Subsection Some more info Subsection 2 Even more info! ------- bla Subsection Some more info Subsection 2 Even more info! ------- 

Надеюсь, это поможет.