解决UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0x8b in position 1: illegal multibyte sequence

在使用python2.x/3.x做爬虫访问网页时,偶尔会遇到这个错误提示:

UnicodeDecodeError: 'gbk' codec can't decode byte 0x8b in position 1: illegal multibyte sequence

假设获取到的数据为webdata,

webdata.decode(encoding='gbk', errors='ignore')当解码时加上忽略错误项的参数ignore后,可以解码出来,但是全部是乱码的话,就需要检查一下request的headers了。

我遇到的情况是这样的:

为了让访问更加友好,我设置了N多个headers的字典,每次随机抽取一个,有一个设置是:

'Accept-Encoding': 'gzip, deflate',

这个需要去掉,否则读取下来的数据就是压缩后的了。

评论 (2)
  1. 沙发
    Mr.Li 2017-08-25 04:48

    一般用Chrome抓的连接配置Header

    • 回复
      kingmo888 2017-08-25 08:43
      @Mr.Li 当然可以,一般我也用这样的配置。不过遇到需要大量访问时,目标网站的一些策略会根据你的headers和IP等综合判断,如果一直是同一个headers、短时间、大量IP,很有可能这些大量IP就被封杀了。