簡體   English   中英

使用lxml.html提取文本

[英]Extract text with lxml.html

我有一個HTML文件:

<html>
    <p>somestr
        <sup>1</sup>
       anotherstr
    </p>
</html>

我想將文本提取為:

somestr 1 anotherstr

但我無法弄清楚該怎么做。 我寫了一個to_sup()函數,它將數字字符串轉換為上標,所以我得到的最接近的是:

for i in doc.xpath('.//p/text()|.//sup/text()'):
    if i.tag == 'sup':
        print to_sup(i),
    else:
        print i,

但我的ElementStringResult似乎沒有一個方法來獲取標簽名稱,所以我有點迷失。 任何想法如何解決?

第一個解決方案(連接沒有分隔符的文本 - 另見python [lxml] - 清除html標簽 ):

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

只是不要在XPath中的sup節點上調用text()

for x in doc.xpath("//p/text()|//sup"):
    try:
        print(to_sup(x.text))
    except AttributeError:
        print(x)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM