2010-02-05 4 views
1

Предположим, что у меня есть некоторые HTML-код, как это (генерируется из Markdown или текстиля или что-то):Как создать оглавление для текста HTML в Python?

<h1>A header</h1> 
<p>Foo</p> 
<h2>Another header</h2> 
<p>More content</p> 
<h2>Different header</h2> 
<h1>Another toplevel header 
<!-- and so on --> 

Как я могу генерировать оглавление для него с помощью Python?

ответ

6

Используйте HTML-парсер, такой как lxml или BeautifulSoup, чтобы найти все элементы заголовка.

+0

как они сравниваются? – van

+3

@van: BeautifulSoup - чистый Python, но не очень 3.x-совместимый. lxml хорош, но требует компилятора C для сборки. –

+0

Я действительно больше искал пример кода, но, думаю, я понял это. Я, вероятно, буду использовать lxml, поскольку (a) он полезен для большего количества вещей, и (b) наличие модуля, который похож на имя класса, нарушает мое чувство эстетики. – LeafStorm

3

Вот пример использования lxml и xpath.

from lxml import etree 
doc = etree.parse("test.xml") 
for node in doc.xpath('//h1|//h2|//h3|//h4|//h5'): 
    print node.tag, node.text 
Смежные вопросы