Python 使用lxml.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文件:

<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))