Поиск родительского тега текстовой строки с помощью ElementTree / lxml - PullRequest
2 голосов
/ 22 июня 2009

Я пытаюсь взять строку текста и «извлечь» остальную часть текста в абзаце / документе из html.

Мой текущий подход заключается в попытке найти «родительский тег» строки в html, который был проанализирован с помощью lxml. (если вы знаете лучший способ решения этой проблемы, я весь в ушах!)

Например, найдите в дереве «ТЕКСТ СТРОНЯ ЗДЕСЬ» и верните тег «p». (обратите внимание, что я не буду знать точный макет HTML заранее)

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

Спасибо за вашу помощь!

1 Ответ

3 голосов
/ 22 июня 2009

Это простой способ сделать это с ElementTree. Это требует, чтобы ваш ввод HTML был действительным XML (поэтому я добавил соответствующие конечные теги в ваш 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)
...