HTML procesado a texto plano usando Python

Estoy tratando de convertir un trozo de texto HTML con BeautifulSoup. Aquí hay un ejemplo:

<div>
    <p>
        Some text
        <span>more text</span>
        even more text
    </p>
    <ul>
        <li>list item</li>
        <li>yet another list item</li>
    </ul>
</div>
<p>Some other text</p>
<ul>
    <li>list item</li>
    <li>yet another list item</li>
</ul>

Intenté hacer algo como:

def parse_text(contents_string)
    Newlines = re.compile(r'[\r\n]\s+')
    bs = BeautifulSoup.BeautifulSoup(contents_string, convertEntities=BeautifulSoup.BeautifulSoup.HTML_ENTITIES)
    txt = bs.getText('\n')
    return Newlines.sub('\n', txt)

... pero de esa manera mi elemento span está siempre en una nueva línea. Este es, por supuesto, un ejemplo simple. ¿Hay alguna forma de obtener el texto en la página HTML como la forma en que se procesará en el navegador (no se requieren reglas de CSS, solo se representan los elementos de forma regular div, span, li, etc.) en Python?

Respuestas a la pregunta(2)

Su respuesta a la pregunta