Python3 报 'gb2312' codec can't decode byte 0x89 in position 42485: illegal multibyte sequence 解决方法...

前言

关于字符编码问题在Py2中经常碰到,但是Py3在字符编码这块做了不少的改进,但是有些特殊情况下还是会出现问题。今天碰到了一个神奇的字符问题...

博主之前写过一个网站的爬虫,去定时爬某个站点的评论内容,已经稳定运行两个月,每次抓取完成后会推送一条微信消息到手机上,但是这两周以来一直没有推送,觉得很奇怪,难道网站内容改版了?

分析

由于脚本跑在美国VPS服务器上,先使用浏览器打开网站查看网页源代码,发现网站结构并没有变,难道是登录的session失效了?因为之前出现过session失效的情况,那是因为两次抓取中间间隔时间太长导致的,后来调整到每一个小时都去请求一个,以保证session存活。按照道理来说不应该出现session失效的问题,因为脚本自动运行的时候会在每天0点10分的时候进行签到操作,签到完成也会推送微信消息,这个签到消息一直都是正常的,只有抓取出现了问题。

看来只能把脚本拖下来调试了,本地运行脚本,提示错误

 'gb2312' codec can't decode byte 0x89 in position 42485: illegal multibyte sequence

神奇了,这个问题之前都没有出现过,再次打开网站查看源代码发现编码并没有变,确定是gb2312没有问题的,神奇了,既然页面上编码是正确的,为何会报错呢?

根据之前做过微信相关应用的经验想到会不会是因为一些字符导致的解码失败,比如一些神奇的表情或者泰国文字,如果是这样那就简单了,使用一种范围更大的字符编码进行解码应该就可以了。

根据谷歌结果得知使用gb18030即可,修改代码后成功解码无报错

jifen_data = s.get(url=url_jifen, headers=headers, cookies=cookies_pc, timeout=10).content.decode('gb18030')

参考

http://blog.csdn.net/junkichan/article/details/51913845

转载于:https://my.oschina.net/SimTao/blog/3024021

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值