Seite 1 von 1

Mit lxml einen Text-Knoten finden

Verfasst: Samstag 8. Januar 2011, 12:49
von sma
Komme ich mit lxml irgendwie an das "Welt" in dem folgenden Beispiel?

Code: Alles auswählen

from lxml import etree
html = etree.fromstring("<html><a>Hallo</a> Welt <b>!</b></html>")
print html.find("a").text  #=> Hallo
print html.find("b").text #=> !
Die "Element"-Abstraktion sieht glaube ich nicht vor, dass ein Element nicht nur Elemente als Kinder hat. In HTML kann das aber durchaus passieren.

Alternativ kann ich auch dies machen, hilft mir aber auch nicht wirklich:

Code: Alles auswählen

from lxml import html
doc = html.fromstring("<html><a>Hallo</a> Welt <b>!</b></html>")
print doc.find("body").text_content() #=> Hallo Welt !
OK, dies geht wohl. Meine Frage hat sich wohl erledigt ;)

Code: Alles auswählen

print doc.find("body").find("a").xpath("following-sibling::text()")[0] #=> Welt
Stefan

Re: Mit lxml einen Text-Knoten finden

Verfasst: Samstag 8. Januar 2011, 12:55
von BlackJack
Der Text nach einem Element ist als Attribut verfügbar:

Code: Alles auswählen

In [224]: html.find('a').tail
Out[224]: ' Welt '

Re: Mit lxml einen Text-Knoten finden

Verfasst: Samstag 8. Januar 2011, 13:36
von sma
Ha, super. Danke.

Stefan