如何在Python中用新格式替换HTML元素
有什么好的方法可以替换像这样的HTML标签:
Old : <div id=pgbrk" ....../>....Page Break....</div>
New : <!--page break -->
因为
的id可能有很多其他的值,所以用正则表达式来处理并不是个好主意。我需要一些类似LXML的东西。简单来说,我的问题就是要把一个HTML标签替换成一个字符串!
2 个回答
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)
更多文档可以查看这里:http://docs.python.org/library/xml.dom.html
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>