不少亂碼問題是編碼形成的,通常對於中文網站基本是UTF-8,GB2312,能夠GB18030通吃。html
另外一個形成亂碼的緣由是壓縮格式,不少規模較大的網站都是以gzip的壓縮格式輸出頁面的,因此在用BS解析以前須要先判斷該網頁是否通過壓縮,若是通過壓縮則先進行解壓操做。網站
import urllib2 import gzip import StringIO url = 'http://guomeidiyicheng.soufun.com/xiangqing/' data = urllib2.urlopen(url).read() data = StringIO.StringIO(data) gzipper = gzip.GzipFile(fileobj=data) html = gzipper.read() print html