我有一个文件:
<html>
<body>
<p>Hello World!</p>
<p>Goodbye!</p>
</body>
</html>
我想遍历文档中的所有文本节点,执行命名实体识别(该组件适用于纯文本输入),然后输出通过我的识别算法的所有元素的 xpath。我的问题是我不知道如何在不丢弃 xpath 信息的情况下获取文档中的所有文本元素。例如,
root.xpath("//text()")
只产生一个扁平的字符串数组:
['\n ', 'Hello World!', '\n ', 'Goodbye!', '\n ']
所有结构信息都丢失了,所以我无法确定每个字符串在文档中的位置。有没有更好的办法?
这是完整的来源:
import lxml.html
import sys
with open(sys.argv[1]) as fin:
text_string = fin.read()
root = lxml.html.document_fromstring(text_string)
text_elements = root.xpath("//text()")
print text_elements