Python,lxml和使用lxml.html.tostring(el)删除外部标记

Tam*_*mpa 5 python lxml

我使用下面的内容来获取节的所有html内容以保存到数据库

el = doc.get_element_by_id('productDescription')
lxml.html.tostring(el)
Run Code Online (Sandbox Code Playgroud)

产品说明的标签如下所示:

<div id='productDescription'>

     <THE HTML CODE I WANT>

</div>
Run Code Online (Sandbox Code Playgroud)

代码工作得很好,给了我所有的html代码但是如何删除外层即the <div id='productDescription'>和close标签</div>

jfs*_*jfs 3

您可以将每个子项单独转换为字符串:

text = el.text
text += ''.join(map(lxml.html.tostring, el.iterchildren()))
Run Code Online (Sandbox Code Playgroud)

或者以更黑客的方式:

el.attrib.clear()
el.tag = '|||'
text = lxml.html.tostring(el)
assert text.startswith('<'+el.tag+'>') and text.endswith('</'+el.tag+'>')
text = text[len('<'+el.tag+'>'):-len('</'+el.tag+'>')]
Run Code Online (Sandbox Code Playgroud)