使用Python BeautifulSoup + MySql编码错误

时间:2011-05-05 19:13:00

标签: python mysql encoding urllib2 beautifulsoup

我正在使用BeautifulSoup python库。 我使用urllib2库从页面下载HTML代码,然后我用BeautifulSoup解析它。 我想将一些HTML内容保存到MySql表中,但我在编码时遇到了一些问题。 MySql表使用'utf-8'charset编码。

一些例子:

当我下载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 个答案:

答案 0 :(得分:3)

您有正确的UTF-8数据来自BeautifulSoup,但它存储在普通的字符串类型中,而不是python的本机unicode字符串类型。我认为这就是你需要做的事情:

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

答案 1 :(得分:2)

BeautifulSoup将所有数据作为unicode字符串返回。首先检查unicode字符串是否正确。如果没有,则输入数据的编码存在一些问题。