html = '<div>text1<span>childtext1</span>text2<span>childtext2</span>text3</div>'
import lxml.html # ...or lxml.etree as appropriate
div = lxml.html.fromstring(html)
texts = [div.text] + [child.tail for child in div]
# Result: texts == ['text1', 'text2', 'text3']
# ...and you are guaranteed that div[x].tail == texts[x+1]
# (which can be useful if you need to access or modify the DOM)
这样的文本将位于元素子元素的
tail
属性中。如果元素在elem
中,则:将为您提供元素中第一个子元素的尾部文本,在您的例子中是您要查找的
"text2"
。在嗯,lxml.etree提供完整的XPath支持,允许您处理文本项:
{{sram>属性中的任何子节点都不在cdllam>中。在
例如,以下是提取节点中所有文本块的最简单方法:
如果为了防止
^{pr2}$texts
可能包含空字符串而牺牲该关系,则可以使用以下方法:我还没有用普通的stdlib ElementTree测试过这个,但它也应该可以用它来工作。(当我看到shaneholloway的lxml专用解决方案时,我才想到这一点)我更喜欢lxml,因为它对HTML的视频同步有更好的支持,而且我通常已经为
lxml.html.clean
安装了它相关问题 更多 >
编程相关推荐