2017-05-13 5 views
1

Ich verwende lxml, um HTML-scraping zu tun, und ich muss ein Element von text(), in ähnlicher Weise wie what is done on another question with pure XML, aber egal, was passiert, bekomme ich ungültige Prädikat Fehler . Ich habe es vereinfacht zu diesem Beispiel unten:lxml ungültiges Prädikat bei Verwendung von text()

import lxml.html 
sample_html = "<div><h2>test string</h2><h2>other string</h2></div>" 
sample_tree = lxml.html.fromstring(sample_html) 
sample_tree.findall('.//h2[text()="test string"]') 

Während diese gültig sein sollte, ich den Fehler immer wieder bekommen:

File "<string>", line unknown 
SyntaxError: invalid predicate 

Irgendwelche Hinweise auf, wie man richtig lxml bekommen ein Element von text() auswählen beim Parsen von HTML?

Antwort

2

Der Ausdruck selbst ist gültig, aber Sie haben stattdessen die .xpath() Methode verwenden:

sample_tree.xpath('.//h2[text()="text string"]') 

Beachten Sie, dass Sie auch . in place of text() in diesem Fall verwenden:

.//h2[. = "text string"] 
Verwandte Themen