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

2 投票
1 回答
1653 浏览
提问于 2025-04-15 12:24

我正在尝试从一段文本中“提取”出整段文字,或者说从HTML文档中获取剩下的内容。

我现在的做法是试图找到这个文本在HTML中对应的“父标签”,我使用的是lxml这个库来解析HTML。(如果你知道更好的解决办法,我非常乐意听听!)

举个例子,我想在树形结构中搜索“这里是文本字符串”,然后返回对应的“p”标签。(注意,我事先并不知道HTML的具体布局)

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

谢谢你的帮助!

1 个回答

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)

撰写回答