chardet.detect无法获取字符编码,字符编码为乱码怎么办?

使用chardet.detect获取的encoding为None,字符串打印出来是完全的乱码,不知道该怎么办?

阅读 8.8k
1 个回答
新手上路,请多包涵

可能是抓取的网页被压缩了缘故,您可以试一下用这个抓取网页:
参考来源:http://www.cnblogs.com/jixin/...

import socket
import urllib2
import zlib

user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
headers = { 'User-Agent' : user_agent }

def Get(url, refer=None):

try:
    req = urllib2.Request(url,headers = headers)
    req.add_header('Accept-encoding', 'gzip')#默认以gzip压缩的方式得到网页内容
    if not (refer is None):
        req.add_header('Referer', refer)
    response = urllib2.urlopen(req, timeout=120)
    html = response.read()
    gzipped = response.headers.get('Content-Encoding')#查看是否服务器是否支持gzip
    if gzipped:
        html = zlib.decompress(html, 16+zlib.MAX_WBITS)#解压缩,得到网页源码
    return html
except urllib2.HTTPError, e:
    return e.read()
except socket.timeout, e:
    return ''
except socket.error, e:
    return ''
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题