2011-05-05 75 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