天天看點

python unicode編碼轉換中文_Scrapy爬蟲架構抓取中文結果為Unicode編碼,如何轉換UTF-8編碼...

關于Python的編碼一直是一個痛……半夜研究Scrapy的時候抓取了一下内容,抓取了一些中文内容。都是

1\u5173\u4e8e

的Unicode編碼。

我想将取得的内容轉成UTF-8正常的顯示中文應該怎麼做?在Scrapy看得有點暈,Python轉編碼還好。

表示Scrapy取的好像是

1list類型

不能對該類型進行編碼解碼吧?

主要是我不知道怎麼寫這段代碼的說……

另,假如我入庫MySQL以

1charset='utf8'

不知道會不會正常的轉成中文UTF-8而不是Unicode?

查閱了不少資料,有點迷迷糊糊的沒看懂,遂到SF問一下~

thanks~

我遇到過一樣的問題,可以參考

http://git.oschina.net/ldshuang/imax-spider/commit/1d05d7bafdf7758f7b422cc1133abf493bf55086

這個所說的list類型是個什麼樣子?list裡面儲存多行所抓取的字元串?那就直接for s in strs取出,encode()為utf-8再儲存就行。

或者一個list就是一個抓取的字元串?可python的字元串本質也就是list啊。””.join()試試

\u5173\u4e8e 這就是utf8

http://zh.wikipedia.org/wiki/UTF-8

建議先去弄清楚unicode、UTF、UCS

1

2

3for line in list:

line = unicode(line,"UTF-8")

#do something..

這樣應該可以把。

我最近用結巴分詞也遇到過類似問題,然後上網查最後這樣解決的(不過我是中文寫入檔案的資料庫會不會不一樣就不知道了):

1.如 @tengyun 所言,對于要輸出的元素 a.encode(‘utf-8’)

2.并且在程式的開頭加encoding & 重載sys。。。

1

2

3

4#encoding=utf-8

import sys

reload(sys)

sys.setdaulftencoding('utf-8')

題主還是先搞明白unicode和utf-8是什麼關系吧。

List類型你也是要一個一個item地插入資料庫,隻要對每個item都進行轉碼操作即可,例如

1

2for ii in itemlist:

str = ii.encode('utf-8')

更多scrapy相關的内容,可以看看這個部落格,http://tech.my-coffees.com

為了大家不再百度找答案。這裡放上答案:

str=json.dumps(dict(item),ensure_ascii=False)+”\n”;

str=unicode.encode(str,’utf-8′);