Получение международных символов с веб-страницы?[дубликат]
Вопрос
На этот вопрос уже есть ответ здесь:
Я хочу соскрести некоторую информацию с веб-страницы football (футбол), используя простые регулярные выражения python.Проблема в том, что такие игроки, как первый парень, ЭАРИТАЛО, выступают как ЭАРИТАЛО!
То есть html использует экранированную разметку для специальных символов, таких как Ä
Есть ли простой способ считывания html-кода в правильную строку python?Если бы это был XML / XHTML, это было бы легко, синтаксический анализатор сделал бы это.
Решение
Я бы порекомендовал Прекрасный суп для очистки HTML.Вам также нужно указать ему преобразовать HTML-объекты в соответствующие символы Юникода, например:
>>> from BeautifulSoup import BeautifulSoup
>>> html = "<html>ÄÄRITALO!</html>"
>>> soup = BeautifulSoup(html, convertEntities=BeautifulSoup.HTML_ENTITIES)
>>> print soup.contents[0].string
ÄÄRITALO!
(Было бы неплохо, если бы стандартный кодеки модуль включал в себя кодек для этого, такой, чтобы вы могли делать "some_string".decode('html_entities')
но, к сожалению, это не так!)
Редактировать: Другое решение:Разработчик Python Фредрик Ландх (среди прочего, автор elementtree) имеет функция для расшифровки HTML-объектов на его веб-сайте, который работает с десятичными, шестнадцатеричными и именованными объектами (BeautifulSoup не будет работать с шестнадцатеричными).
Другие советы
Попробуйте использовать Прекрасный суп.Это должно сработать и дать вам хорошо отформатированный DOM для работы.
Этот блог похоже, entry добился в этом некоторого успеха.
Я сам этого не пробовал, но вы пробовали
http://zesty.ca/python/scrape.html ?
Кажется, у него есть метод htmldecode (text), который будет делать то, что вы хотите.