如何用Python中的某种新格式替换HTML元素

时间:2011-11-10 10:38:01

标签: python html

替换HTML标记的好方法是:

Old : <div id=pgbrk" ....../>....Page Break....</div>

New : <!--page break -->

div id可能有许多其他值,因此正则表达式不是一个好主意。我需要一些LXML的东西。基本上,我的问题是用字符串替换HTML标记!

2 个答案:

答案 0 :(得分:3)

只要您的div有父标记,就可以执行此操作:

import lxml.html as LH
import lxml.etree as ET

content='<root><div id="pgbrk" ......>....Page Break....</div></root>'
doc=LH.fromstring(content)
# print(LH.tostring(doc))    
for div in doc.xpath('//div[@id="pgbrk"]'):
    parent=div.getparent()
    parent.replace(div,ET.Comment("page break"))
print(LH.tostring(doc))

产量

<root><!--page break--></root>

答案 1 :(得分:2)

您可以使用纯DOM http://docs.python.org/library/xml.dom.minidom.html

1)解析你的来源

from xml.dom.minidom import parse
datasource = open('c:\\temp\\mydata.xml')
doc= parse(datasource)

2)找到要移除的节点

for node in doc.getElementsByTagName('div'):
    for attr in node.attributes:
        if attr.name == 'id':
            ...

3)找到目标节点时,用新的评论节点替换它们

parent = node.parentNode
parent.replaceChild(doc.createComment("page break"), node)

docs:http://docs.python.org/library/xml.dom.html