Python是個(gè)好工具,但是也有其固有的一些缺點(diǎn)。最近在學(xué)習(xí)網(wǎng)頁(yè)爬蟲(chóng)時(shí)就遇到了這樣一種問(wèn)題,中文網(wǎng)站爬取下來(lái)的內(nèi)容往往中文顯示亂碼。看過(guò)我之前博客的同學(xué)可能知道,之前爬取的一個(gè)學(xué)校網(wǎng)頁(yè)就出現(xiàn)了這個(gè)問(wèn)題,但是當(dāng)時(shí)并沒(méi)有解決,這著實(shí)成了我一個(gè)心病。這不,剛剛一解決就將這個(gè)方法公布與眾,大家一同分享。
首先,我說(shuō)一下Python中文亂碼的原因,Python中文亂碼是由于Python在解析網(wǎng)頁(yè)時(shí)默認(rèn)用Unicode去解析,而大多數(shù)網(wǎng)站是utf-8格式的,并且解析出來(lái)之后,python竟然再以Unicode字符格式輸出,會(huì)與系統(tǒng)編碼格式不同,導(dǎo)致中文輸出亂碼,知道原因后我們就好解決了。下面上代碼,實(shí)驗(yàn)對(duì)象仍是被人上了無(wú)數(shù)遍的百度主頁(yè)~
# -*- coding: utf-8 -*-import urllib2import reimport requestsimport sysimport urllib#設(shè)置編碼reload(sys)sys.setdefaultencoding('utf-8')#獲得系統(tǒng)編碼格式type = sys.getfilesystemencoding()r = urllib.urlopen("http://www.baidu.com")#將網(wǎng)頁(yè)以u(píng)tf-8格式解析然后轉(zhuǎn)換為系統(tǒng)默認(rèn)格式a = r.read().decode('utf-8').encode(type)print a最后輸出效果,中文完美輸出
	
以上這篇解決Python網(wǎng)頁(yè)爬蟲(chóng)之中文亂碼問(wèn)題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持VEVB武林網(wǎng)。
新聞熱點(diǎn)
疑難解答
圖片精選