Encontre próximos irmãos até um certo usando beautifulsoup

A página da Web é algo assim:

<h2>section1</h2>
<p>article</p>
<p>article</p>
<p>article</p>

<h2>section2</h2>
<p>article</p>
<p>article</p>
<p>article</p>

Como posso encontrar cada seção com artigos dentro deles? Ou seja, depois de encontrar h2, encontre nextsiblings

até a próxima h2.

Se a página da Web fosse como: (o que normalmente é o caso)

<div>
<h2>section1</h2>
<p>article</p>
<p>article</p>
<p>article</p>
</div>

<div>
<h2>section2</h2>
<p>article</p>
<p>article</p>
<p>article</p>
</div>

Eu posso escrever códigos como:

for section in soup.findAll('div'):
...
    for post in section.findAll('p')

Mas o que devo fazer com a primeira página, se quiser obter o mesmo resultado?