使用Python HTMLParser替换HTML文件中数据的某些字符串

2 投票
1 回答
4505 浏览
提问于 2025-04-17 01:43

我需要在我的HTML页面的数据内容中替换一些字符串。我不能直接使用替换函数,因为我只想修改数据部分,而不想改变任何标签或属性。为此,我使用了HTMLParser。但是,我在将修改后的内容写回文件时遇到了困难。使用HTMLParser我可以解析并获取数据内容,然后对其进行必要的更改。但我该如何将这些内容放回我的HTML文件呢?

请帮帮我。以下是我的代码:

class EntityHTML(HTMLParser.HTMLParser):
    def __init__(self, filename):
        HTMLParser.HTMLParser.__init__(self)
        f = open(filename)
        self.feed(f.read())

    def handle_starttag(self, tag, attrs):
        """Needn't do anything here"""
        pass

    def handle_data(self, data):
        print data
        data = data.replace(",", "&sbquo")

1 个回答

3

HTMLParser 不会在内存中创建你 HTML 文件的任何表示。你可以在 handle_*() 方法中自己实现这个功能,但有个更简单的方法,就是使用 BeautifulSoup

>>> import re
>>> from BeautifulSoup import BeautifulSoup
>>> soup = BeautifulSoup('<a title=,>,</a>')
>>> print soup
<a title=",">,</a>
>>> comma = re.compile(',')
>>> for t in soup.findAll(text=comma): t.replaceWith(t.replace(',', '&sbquo'))
>>> print soup
<a title=",">&sbquo</a>

撰写回答