Ответ 1
Я бы рекомендовал BeautifulSoup для очистки HTML. Вам также необходимо сообщить об этом, чтобы преобразовать объекты HTML в соответствующие символы Юникода, например:
>>> from BeautifulSoup import BeautifulSoup
>>> html = "<html>ÄÄRITALO!</html>"
>>> soup = BeautifulSoup(html, convertEntities=BeautifulSoup.HTML_ENTITIES)
>>> print soup.contents[0].string
ÄÄRITALO!
(Было бы неплохо, если бы стандартный codecs модуль содержал кодек для этого, чтобы вы могли сделать "some_string".decode('html_entities')
, но к сожалению, это не так!)
EDIT: Другое решение: Разработчик Python Фредрик Лунд (автор elementtree, помимо прочего) имеет функцию для незаметности HTML-объектов на своем веб-сайте, которая работает с десятичной, шестнадцатеричной и именованные объекты (BeautifulSoup не будет работать с шестнадцатеричными).