Encuentra a los siguientes hermanos hasta un determinado usando beautifulsoup

La página web es algo así:

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

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

¿Cómo puedo encontrar cada sección con artículos dentro de ellos? Es decir, después de encontrar h2, encontrar nextsiblings

Hasta el próximo h2.

Si la página web fuera como: (que normalmente es el 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>

Puedo escribir códigos como:

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

Pero, ¿qué debo hacer con la primera página web si deseo obtener el mismo resultado?

Respuestas a la pregunta(1)

Su respuesta a la pregunta