Получение международных символов с веб-страницы?[дубликат]

StackOverflow https://stackoverflow.com/questions/53224

  •  09-06-2019
  •  | 
  •  

Вопрос

На этот вопрос уже есть ответ здесь:

Я хочу соскрести некоторую информацию с веб-страницы football (футбол), используя простые регулярные выражения python.Проблема в том, что такие игроки, как первый парень, ЭАРИТАЛО, выступают как ЭАРИТАЛО!
То есть html использует экранированную разметку для специальных символов, таких как Ä

Есть ли простой способ считывания html-кода в правильную строку python?Если бы это был XML / XHTML, это было бы легко, синтаксический анализатор сделал бы это.

Это было полезно?

Решение

Я бы порекомендовал Прекрасный суп для очистки HTML.Вам также нужно указать ему преобразовать HTML-объекты в соответствующие символы Юникода, например:

>>> from BeautifulSoup import BeautifulSoup    
>>> html = "<html>&#196;&#196;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), который будет делать то, что вы хотите.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top