首页 > 解决方案 > XPath:获取父母列表,但不获取他们的任何孩子

问题描述

我正在遍历一个大型 HTML 文档,需要获取所有元素的 HTML,其中class包含country. 但是,我需要避免在列表中包含这些元素的所有子元素,它们可能具有类似country-nameor的类country-flag-image

例如,它可能看起来像以下形式的元素列表:

<div class="country"><div class="country-body">Text</div></div>

而且我需要获取外部 div 元素,但不需要获取内部 div 元素,因此此代码将不起作用://*[contains(@class, "country")].

我需要使用contain,因为如果父元素类名称有一点变化或更改(例如,外部 div 可能更改为country-header),代码需要足够灵活才能工作。

有没有办法做到这一点?

标签: htmlxpath

解决方案


尝试这个:

import lxml.html as LH

xml="""
<div class="country"><div class="country-body">Text_1</div></div>
"""
doc = LH.fromstring(xml)
for elem in doc.iter():
    elem.text = ''
LH.tostring(doc)

输出:

'<div class="country"><div class="country-body"></div></div>\n'

推荐阅读