Python BeautifulSoup 的编码错误 +数据库

发布于 2024-11-05 05:08:58 字数 718 浏览 3 评论 0原文

我正在使用 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照片和视频”

正确的文本是:

“Ver las últimas noticias。 las noticias de última hora con la mejor cobertura con fotos y video"

我尝试使用多个字符集对该文本进行编码和解码,但是当我将其插入 MySql 时,我得到了类似以下内容的内容:

"Ver las àltimas阿根廷雅虎新闻的公告和待办事项。 ¡ltima hora con la mejor cobertura con fotos y video"

我在编码方面遇到问题,但我不知道如何解决它们。

有什么建议吗?

I'm working with the BeautifulSoup python library.
I used the urllib2 library to download the HTML code from a page, and then I have parsed it with BeautifulSoup.
I want to save some of the HTML content into a MySql table, but I'm having some problems with the encoding. The MySql table is encoded with 'utf-8' charset.

Some examples:

When I download the HTML code and parse it with BeautifulSoup I have something like:

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

The correct text would be:

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

I have tried to encode and decode that text with multiple charsets, but when I insert it into MySql I have somethig like:

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

I'm having problems with the encoding, but I don't know how to solve them.

Any suggestion?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

庆幸我还是我 2024-11-12 05:08:58

您有来自 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

You have correct UTF-8 data coming out of BeautifulSoup, but it's being stored in a normal string type, not python's native unicode string type. I think this is what you need to do:

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

And then the string should be the proper data type and encoding to send to mysql.

An example:

>>> 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
ゝ杯具 2024-11-12 05:08:58

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

BeautifulSoup returns all data as unicode strings. First triple check that the unicode strings are ccorrect. If not then there is some issue with the encoding of the input data.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文