Python BeautifulSoup与MySql编码错误

3 投票
2 回答
716 浏览
提问于 2025-04-16 17:04

我正在使用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 个回答

2

BeautifulSoup会把所有的数据都返回为unicode字符串。首先要仔细检查这些unicode字符串是否正确。如果不正确,那就说明输入的数据在编码上有问题。

3

你从BeautifulSoup得到的UTF-8数据是正确的,但它被存储为普通字符串类型,而不是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

撰写回答