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è)方法公布與眾,大家一同分享。
成都創(chuàng)新互聯(lián)公司-專(zhuān)業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性?xún)r(jià)比吳起網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式吳起網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋吳起地區(qū)。費(fèi)用合理售后完善,10多年實(shí)體公司更值得信賴(lài)。首先,我說(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 urllib2 import re import requests import sys import 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