关于字符编码问题在Py2中常常碰到,可是Py3在字符编码这块作了很多的改进,可是有些特殊状况下仍是会出现问题。今天碰到了一个神奇的字符问题...浏览器
博主以前写过一个网站的爬虫,去定时爬某个站点的评论内容,已经稳定运行两个月,每次抓取完成后会推送一条微信消息到手机上,可是这两周以来一直没有推送,以为很奇怪,难道网站内容改版了?服务器
因为脚本跑在美国VPS服务器上,先使用浏览器打开网站查看网页源代码,发现网站结构并无变,难道是登陆的session失效了?由于以前出现过session失效的状况,那是由于两次抓取中间间隔时间太长致使的,后来调整到每个小时都去请求一个,以保证session存活。按照道理来讲不该该出现session失效的问题,由于脚本自动运行的时候会在天天0点10分的时候进行签到操做,签到完成也会推送微信消息,这个签到消息一直都是正常的,只有抓取出现了问题。微信
看来只能把脚本拖下来调试了,本地运行脚本,提示错误cookie
'gb2312' codec can't decode byte 0x89 in position 42485: illegal multibyte sequence
神奇了,这个问题以前都没有出现过,再次打开网站查看源代码发现编码并无变,肯定是gb2312没有问题的,神奇了,既然页面上编码是正确的,为什么会报错呢?session
根据以前作过微信相关应用的经验想到会不会是由于一些字符致使的解码失败,好比一些神奇的表情或者泰国文字,若是是这样那就简单了,使用一种范围更大的字符编码进行解码应该就能够了。网站
根据谷歌结果得知使用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/51913845url