搜索并替换HTML文本,而不是标签

时间:2013-01-03 07:39:07

标签: python html xml

  

可能重复:
  How to find/replace text in html while preserving html tags/structure

我想通过HTML文本进行搜索和替换。我不想弄乱标签或它们的属性,只是HTML文本。我应该如何在Python中做到这一点?

2 个答案:

答案 0 :(得分:2)

import lxml.etree as et
html=\
"""
<!DOCTYPE html>
<html>
  <head>
    <title>Hello HTML</title>
  </head>
  <body>
    <p>Hello 1</p>
    <p>Hello 2</p>
    <p>Hello 3</p>
    <p>Hello 4</p>
  </body>
</html>
"""
doc = et.fromstring(html)
for i in doc.xpath('.//p[contains(.,"Hello") and not(contains(.,"4"))]'):
    i.text='replaced'
print et.tostring(doc,pretty_print=True)

OUT:

<html>
  <head>
    <title>Hello HTML</title>
  </head>
  <body>
    <p>replaced</p>
    <p>replaced</p>
    <p>replaced</p>
    <p>Hello 4</p>
  </body>
</html>

答案 1 :(得分:0)

您可以尝试使用Re模块。或者只使用replace功能。

但是,如果您需要替换多个关键字,则搜索和替换处理效率非常低。您应该通过beautifulSouplxml更好地解析结构,获取对象,并对对象执行一些操作。