node.nextSibling
атрибут - ваше решение:
from BeautifulSoup import BeautifulSoup
soup = BeautifulSoup(html)
nextNode = soup.find('p', {'class': 'top'})
while True:
# process
nextNode = nextNode.nextSibling
if getattr(nextNode, 'name', None) == 'p' and nextNode.get('class', None) == 'end':
break
Это сложное условие - убедиться, что вы обращаетесь к атрибутам тега HTML, а не к строковым узлам.