使用ElementTree / lxml查找文本字符串的父标记

时间:2009-06-22 00:29:03

标签: python lxml elementtree

我正在尝试使用一串文本,并从html中“提取”段落/文档中的其余文本。

我当前的方法是尝试在已用lxml解析的html中找到字符串的“父标记”。 (如果你知道一个更好的方法来解决这个问题,我会全力以赴!)

例如,在树中搜索“TEXT STRING HERE”并返回“p”标签。 (请注意,我事先不知道html的确切布局)

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

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

使用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)