Python响应对象text属性乱码解决方案


Posted in Python onMarch 31, 2020

在获得网页响应对象res后,使用res.text属性可以获得网页源代码,但可能出现乱码!因为requests库会使用自动猜测的解码方式将抓取的网页源码进行解码,然后存储到res对象的text属性中;

但有的网站的编码格式和requests库默认的解码格式()不一样(比如gbk gb2312是gbk的子集),这时候就要自己手动进行解码,先获得content属性,返回的是bytes类型的字符串,再进行解码decode(“网页的编码

格式”)

这时候可能出现新的问题

'gbk' codec can't decode byte 0xd0 in position 15264: illegal multibyte sequence

这是因为遇到了非法字符

比如网页中有这种字符

Python响应对象text属性乱码解决方案

全角空格往往有多种不同的实现方式,比如\xa3\xa0,或者\xa4\x57,这些 字符,看起来都是全角空格,但它们并不是“合法”的全角空格(真正的全角空格是\xa1\xa1),因此在转码的过程中出现了异常。

只要字符串中出现了一个非法字符,整篇文章就都无法转码。

对于这种字符,根本不需要,不重要!

解决方法:在解码时候指定errors参数,

decode()的函数原型是decode([encoding], [errors='strict']),可以用第二个参数控制错误处理的策略,默认的参数是strict,代表遇到非法字符时抛出异常;

  • 如果设置为ignore,则会忽略非法字符;
  • 如果设置为replace,则会用?取代非法字符;
  • 如果设置为xmlcharrefreplace,则使用XML的字符引用

#requests库默认会使用自己猜测的解码方式将抓取下来的网页进行解码,然后存储到text属性上去;
#但在该网站中,编码方式和默认的解码方式不一样,就会产生乱码,所以要手动进行解码,先获得content再decode()解码
#右键查看网页源代码,发现是gb2312编码,gb2312就是gbk的子集,所以用decode("gbk")

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python标准库之随机数 (math包、random包)介绍
Nov 25 Python
python实现中文输出的两种方法
May 09 Python
Python列表list解析操作示例【整数操作、字符操作、矩阵操作】
Jul 25 Python
python中for用来遍历range函数的方法
Jun 08 Python
APIStar:一个专为Python3设计的API框架
Sep 26 Python
python生成带有表格的图片实例
Feb 03 Python
python使用adbapi实现MySQL数据库的异步存储
Mar 19 Python
pyqt5 使用cv2 显示图片,摄像头的实例
Jun 27 Python
python中图像通道分离与合并实例
Jan 17 Python
将keras的h5模型转换为tensorflow的pb模型操作
May 25 Python
python数据库批量插入数据的实现(executemany的使用)
Apr 30 Python
python神经网络Xception模型
May 06 Python
django执行数据库查询之后实现返回的结果集转json
Mar 31 #Python
Python super()方法原理详解
Mar 31 #Python
django实现更改数据库某个字段以及字段段内数据
Mar 31 #Python
django rest framework serializer返回时间自动格式化方法
Mar 31 #Python
Python @property及getter setter原理详解
Mar 31 #Python
关于Django Models CharField 参数说明
Mar 31 #Python
Django Serializer HiddenField隐藏字段实例
Mar 31 #Python
You might like
php 无限级 SelectTree 类
2009/05/19 PHP
thinkPHP模板引擎用法示例
2016/12/08 PHP
php实现文章评论系统
2019/02/18 PHP
jQuery textarea的长度进行验证
2009/05/06 Javascript
Prototype 工具函数 学习
2009/07/23 Javascript
javascript DOM编程实例(智播客学习)
2009/11/23 Javascript
解析JavaScript中的标签语句
2013/06/19 Javascript
jcrop基本参数一览
2013/07/16 Javascript
ajax请求乱码的解决方法(中文乱码)
2014/04/10 Javascript
jQuery 2.0.3 源码分析之core(一)整体架构
2014/05/27 Javascript
jquery网页回到顶部效果(图标渐隐,自写)
2014/06/16 Javascript
jQuery 和 CSS 的文本特效插件集锦
2014/12/12 Javascript
JavaScript实现的一个倒计时的类
2015/03/12 Javascript
原生javascript实现的一个简单动画效果
2016/03/30 Javascript
浅谈window.onbeforeunload() 事件调用ajax
2016/06/29 Javascript
JS实现点击事件统计的简单实例
2016/07/10 Javascript
浅谈jQuery中的eq()与DOM中element.[]的区别
2016/10/28 Javascript
easyui-datagrid开发实践(总结)
2017/08/02 Javascript
详解tween.js 中文使用指南
2018/01/05 Javascript
在vue.js中使用JSZip实现在前端解压文件的方法
2018/09/05 Javascript
JavaScript如何借用构造函数继承
2019/11/06 Javascript
小程序选项卡以及swiper套用(跨页面)
2020/06/19 Javascript
jQuery开发仿QQ版音乐播放器
2020/07/10 jQuery
JavaScript实现拖动对话框效果的实现代码
2020/10/12 Javascript
Python程序设计入门(2)变量类型简介
2014/06/16 Python
Python生成随机数组的方法小结
2017/04/15 Python
django 邮件发送模块smtp使用详解
2019/07/22 Python
python实现电子书翻页小程序
2019/07/23 Python
Python bytes string相互转换过程解析
2020/03/05 Python
python实现单张图像拼接与批量图片拼接
2020/03/23 Python
美国创意礼品网站:UncommonGoods
2017/02/03 全球购物
师范毕业生求职自荐信
2013/09/25 职场文书
教师自我评价范文
2013/12/16 职场文书
五四青年节演讲稿
2014/05/26 职场文书
人事任命通知
2015/04/20 职场文书
pytorch finetuning 自己的图片进行训练操作
2021/06/05 Python