Python 使用lxml.html提取文本
我有一个HTML文件:Python 使用lxml.html提取文本,python,lxml,Python,Lxml,我有一个HTML文件: <html> <p>somestr <sup>1</sup> anotherstr </p> </html> 但是我ElementStringResult似乎没有获取标记名的方法,所以我有点迷路了。有什么办法解决吗?只要不要在XPath中的sup节点上调用text() for x in doc.xpath("//p/text()|//sup"):
<html>
<p>somestr
<sup>1</sup>
anotherstr
</p>
</html>
但是我ElementStringResult
似乎没有获取标记名的方法,所以我有点迷路了。有什么办法解决吗?只要不要在XPath中的sup
节点上调用text()
for x in doc.xpath("//p/text()|//sup"):
try:
print(to_sup(x.text))
except AttributeError:
print(x)
第一种解决方案(连接不带分隔符的文本-另请参见):
这一个帮助了我-以我需要的方式连接:
from lxml import etree
print "\n".join(etree.XPath("//text()")(document))
好的,然后从查询中省略text(),直接从节点提取文本。@user1833746——在doc.xpath(“//p |//sup”):print(x.text),但这只输出somestr1
import lxml.html
document = lxml.html.document_fromstring(html_string)
# internally does: etree.XPath("string()")(document)
print document.text_content()
from lxml import etree
print "\n".join(etree.XPath("//text()")(document))