Я использую lxml для разбора xml, но я использую BeautifulSoup для HTML. Вот очень быстрый / краткий тур, заканчивающийся одним решением вашего вопроса. Надеюсь, поможет.
Python 2.6.5 (r265:79359, Mar 24 2010, 01:32:55)
[GCC 4.0.1 (Apple Inc. build 5493)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from BeautifulSoup import BeautifulSoup as soup
>>> stream = open('bs.html', 'r')
>>> doc = soup(stream.read())
>>> doc.body.span
<span class="text">One</span>
>>> doc.body.span.nextSibling
u'some text1'
>>> x = doc.findAll('span')
>>> for i in x:
... print unicode(i)
...
<span class="text">One</span>
<span class="cyrillic">Мир</span>
>>> x = doc('span')
>>> type(x)
<class 'BeautifulSoup.ResultSet'>
>>> for i in x:
... print unicode(i)
...
<span class="text">One</span>
<span class="cyrillic">Мир</span>
>>> for i in x:
... print i.nextSibling
...
some text1
some text2
>>>