你如何获得根元素下的所有内容?
How do you get everything under the root element?
我正在使用 etree 清理一些 html。我意识到我必须有一个根标签来保存所有元素,但我想 return 没有根的字符串。有什么办法吗
from lxml import etree
fragment = etree.fromstring("<fragment>text1 <a>tex2 </a>text3<b>text4</b> <c>text 5</c>text 6<span style=''> Style</span></fragment>")
delete_tag = 'delete_me'
for element in fragment.xpath(".//span[@style='']"):
element.tag = delete_tag
etree.strip_tags(fragment, delete_tag)
print(etree.tostring(fragment))
我得到的是
b'<fragment>text1 <a>tex2 </a>text3<b>text4</b> <c>text 5</c>text 6 Style</fragment>'
但我想要的是
text1 <a>tex2 </a>text3<b>text4</b> <c>text 5</c>text 6 Style
尝试以下方法:
elems = fragment.xpath('.//*')
target = ''
target+=(fragment.xpath('./text()[1]')[0])
for elem in elems:
target+=(etree.tostring(elem).decode())
target
输出:
'text1 <a>tex2 </a>text3<b>text4</b> <c>text 5</c>text 6 Style'
我正在使用 etree 清理一些 html。我意识到我必须有一个根标签来保存所有元素,但我想 return 没有根的字符串。有什么办法吗
from lxml import etree
fragment = etree.fromstring("<fragment>text1 <a>tex2 </a>text3<b>text4</b> <c>text 5</c>text 6<span style=''> Style</span></fragment>")
delete_tag = 'delete_me'
for element in fragment.xpath(".//span[@style='']"):
element.tag = delete_tag
etree.strip_tags(fragment, delete_tag)
print(etree.tostring(fragment))
我得到的是
b'<fragment>text1 <a>tex2 </a>text3<b>text4</b> <c>text 5</c>text 6 Style</fragment>'
但我想要的是
text1 <a>tex2 </a>text3<b>text4</b> <c>text 5</c>text 6 Style
尝试以下方法:
elems = fragment.xpath('.//*')
target = ''
target+=(fragment.xpath('./text()[1]')[0])
for elem in elems:
target+=(etree.tostring(elem).decode())
target
输出:
'text1 <a>tex2 </a>text3<b>text4</b> <c>text 5</c>text 6 Style'