[英]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.