2009-06-22 12 views
2

J'essaie de prendre une chaîne de texte et d '"extraire" le reste du texte du paragraphe/document du code HTML.Recherche de la balise parent d'une chaîne de texte avec ElementTree/lxml

Mon approche actuelle tente de trouver la "balise parent" de la chaîne dans le code HTML qui a été analysé avec lxml. (Si vous connaissez une meilleure façon d'aborder ce problème, je suis tout ouïe!)

Par exemple, recherchez dans l'arbre "TEXT STRING HERE" et renvoyez la balise "p". (Notez que je ne veux pas connaître la disposition exacte du html au préalable)

<html> 
<head> 
... 
</head> 
<body> 
.... 
<div> 
... 
<p>TEXT STRING HERE ......</p> 
... 
</html> 

Merci pour votre aide!

Répondre

3

Ceci est un moyen simple de le faire avec ElementTree. Cela nécessite que votre entrée HTML soit valide au format XML (j'ai donc ajouté les balises de fin appropriées à votre code HTML):

import elementtree.ElementTree as ET 

html = """<html> 
<head> 
</head> 
<body> 
<div> 
<p>TEXT STRING HERE ......</p> 
</div> 
</body> 
</html>""" 

for e in ET.fromstring(html).getiterator(): 
    if e.text.find('TEXT STRING HERE') != -1: 
     print "Found string %r, element = %r" % (e.text, e)