Неправильное кодирование с Python BeautifulSoup + MySql - PullRequest
2 голосов
/ 05 мая 2011

Я работаю с библиотекой BeautifulSoup python.Я использовал библиотеку urllib2 для загрузки HTML-кода со страницы, а затем проанализировал его с помощью BeautifulSoup.Я хочу сохранить часть содержимого HTML в таблицу MySql, но у меня возникли некоторые проблемы с кодировкой.Таблица MySql кодируется кодировкой utf-8.

Некоторые примеры:

Когда я загружаю код HTML и анализирую его с BeautifulSoup, у меня появляется что-то вроде:

"Ver las \xc3\xbaltimas noticias. Ent\xc3\xa9rate de las noticias de \xc3\xbaltima hora con la mejor cobertura con fotos y videos"

Правильный текст будет:

"Ver las últimas noticias. Entérate de las noticias de última hora con la mejor cobertura con fotos y videos"

Я пытался кодировать и декодировать этот текст с несколькими кодировками, но когда я вставлял его в MySqlУ меня есть что-то вроде:

"Ver las últimas noticias y todos los titulares de hoy en Yahoo! Noticias Argentina. Entérate de las noticias de última hora con la mejor cobertura con fotos y videos"

У меня проблемы с кодировкой, но я не знаю, как их решить.

Есть предложения?

Ответы [ 2 ]

3 голосов
/ 05 мая 2011

У вас есть правильные данные UTF-8, поступающие из BeautifulSoup, но они хранятся в обычном строковом типе, а не в собственном строковом типе Unicode Python. Я думаю, что это то, что вам нужно сделать:

codecs.decode(your_string, 'utf-8')

И тогда строка должна иметь правильный тип данных и кодировку для отправки в mysql.

Пример:

>>> codecs.decode("Ver las \xc3\xbaltimas noticias. Ent\xc3\xa9rate de las noticias de \xc3\xbaltima hora con la mejor cobertura con fotos y videos", 'utf-8')
u'Ver las \xfaltimas noticias. Ent\xe9rate de las noticias de \xfaltima hora con la mejor cobertura con fotos y videos'
>>> print _
Ver las últimas noticias. Entérate de las noticias de última hora con la mejor cobertura con fotos y videos
2 голосов
/ 05 мая 2011

BeautifulSoup возвращает все данные в виде строк Unicode.Первая тройная проверка, что строки Юникода являются правильными.Если нет, то возникает проблема с кодировкой входных данных.

...