2011-05-05 40 views
2

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

一些例子:

当我BeautifulSoup下载HTML代码,并解析它,我有类似:

"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"

我试图编码和解码多个字符集的文本,但是当我inse室温它到MySQL我有somethig这样的:

"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

BeautifulSoup以unicode字符串形式返回所有数据。首先检查一下unicode字符串是否正确。如果不是,那么输入数据的编码会有一些问题。

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 
+2

顺便说一句,我认为编码的问题是残酷和不寻常的一种惩罚,我希望盟upvotes跟踪下来。 ;) – 2011-05-05 19:44:48