如何在Python中为HTML文本生成目录?

如何在Python中为HTML文本生成目录?,python,html,tableofcontents,Python,Html,Tableofcontents,假设我有一些HTML代码,比如从Markdown或Textile或其他生成的代码: <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

假设我有一些HTML代码,比如从Markdown或Textile或其他生成的代码:

<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为其生成目录?

使用HTML解析器(如或)查找所有标题元素。

使用HTML解析器(如或)查找所有标题元素。

以下是使用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

下面是一个使用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

@van:BeautifulSoup是纯Python的,但不太兼容3.x。lxml很好,但需要一个C编译器来编译。我确实在寻找更多的示例代码,但我想我已经找到了答案。我可能会使用lxml,因为a对更多的东西很有用,而b有一个看起来像类名的模块扰乱了我的美感。我不确定2010年会怎么样,但现在beautifulsoup可以使用lxml作为解析器,这样你就可以在速度和方便两个方面都做到最好。@van:beautifulsoup是纯Python,但不太兼容3.x。lxml很好,但需要一个C编译器来编译。我确实在寻找更多的示例代码,但我想我已经找到了答案。我可能会使用lxml,因为a它对更多的东西很有用,而b有一个看起来像类名的模块扰乱了我的美感。我不确定2010年会怎么样,但现在beautifulsoup可以使用lxml作为解析器,这样你就可以在速度和方便性两方面都做到最好。