2010-02-05 5 views
1

Supposons que j'ai un code HTML, comme celui-ci (générée à partir Markdown ou textile ou quelque chose):Comment générer une table des matières pour du texte HTML en 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 --> 

Comment pourrais-je générer une table des matières pour l'aide Python?

Répondre

6

Utilisez un analyseur HTML tel que lxml ou BeautifulSoup pour rechercher tous les éléments d'en-tête.

+0

comment se comparent-ils? – van

+3

@van: BeautifulSoup est un pur Python mais pas très compatible avec 3.x. lxml est bon, mais nécessite un compilateur C pour construire. –

+0

Je cherchais vraiment plus de code exemple, mais je pense que je l'ai compris. Je vais probablement utiliser lxml, car (a) c'est utile pour plus de choses, et (b) avoir un module qui ressemble à un nom de classe perturbe mon sens de l'esthétique. – LeafStorm

3

Voici un exemple utilisant lxml et 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 
Questions connexes