soup = BeautifulSoup(html)
nextNode = soup.find('p', {'class': 'top'})
while True:
    nextNode = nextNode.nextSibling
if getattr(nextNode, 'name', None) == 'p' and nextNode.get('class', None
    ) == 'end':
    break
Используйте BeautifulSoup для извлечения одноуровневых узлов между двумя узлами.