楼上所说的编码问题只是一个方面,使用GB18030确实能够解决。另一个造成乱码的原因是压缩格式。很多规模较大的网站都是以gzip的压缩格式输出页面的,所以在用BS解析之前需要先判断该网页是否经过压缩,如果经过压缩则先进行解压操作。完整代码如下:
#-*- coding: utf-8 -*-from __future__ import print_function
import gzipimport StringIOimport urllib2from BeautifulSoup import BeautifulSoup
url = 'http://iccna.blog.sohu.com/164572951.html'response = urllib2.urlopen(url)data = response.read()data = StringIO.StringIO(data)gzipper = gzip.GzipFile(fileobj=data)html = gzipper.read()soup = BeautifulSoup(html, fromEncoding='gb18030')print(soup)