Python HTMLParser для замены некоторых строк в данных HTML-файла - PullRequest
2 голосов
/ 07 сентября 2011

Мне нужно заменить некоторые строки в содержимом данных моей 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 Ответ

2 голосов
/ 07 сентября 2011

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>
...