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中unittest用法实例
Sep 25 Python
python学习 流程控制语句详解
Jun 01 Python
Python基于多线程实现抓取数据存入数据库的方法
Jun 22 Python
在Python中使用gRPC的方法示例
Aug 08 Python
Selenium定位元素操作示例
Aug 10 Python
Python拼接字符串的7种方法总结
Nov 01 Python
Python函数定义及传参方式详解(4种)
Mar 18 Python
python函数声明和调用定义及原理详解
Dec 02 Python
如何将PySpark导入Python的放实现(2种)
Apr 26 Python
Python读取二进制文件代码方法解析
Jun 22 Python
python实现腾讯滑块验证码识别
Apr 27 Python
Python图片验证码降噪和8邻域降噪
Aug 30 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中的注释、变量、数组、常量、函数应用介绍
2012/11/16 PHP
彻底删除thinkphp3.1案例blog标签的方法
2014/12/05 PHP
php中session定期自动清理的方法
2015/11/12 PHP
利用jQuery接受和处理xml数据的代码(.net)
2011/03/28 Javascript
js中生成map对象的方法
2014/01/09 Javascript
js获取 type=radio 值的方法
2014/05/09 Javascript
AngularJS初始化过程分析(引导程序)
2014/12/06 Javascript
JS实现超简单的仿QQ折叠菜单效果
2015/09/21 Javascript
jQuery密码强度检测插件passwordStrength用法实例分析
2015/10/30 Javascript
JS实现单击输入框弹出选择框效果完整实例
2015/12/14 Javascript
jQuery实现的无缝广告图片左右滚动功能详解
2016/12/24 Javascript
纯JS单页面赛车游戏制作代码分享
2017/03/03 Javascript
javascript简单写的判断电话号码实例
2017/05/24 Javascript
详解vue 计算属性与方法跟侦听器区别(面试考点)
2018/04/23 Javascript
学习JS中的DOM节点以及操作
2018/04/30 Javascript
浅谈微信小程序列表埋点曝光指南
2019/10/15 Javascript
在Vue中实现随hash改变响应菜单高亮
2020/03/09 Javascript
Vue实现点击当前行变色
2020/12/14 Vue.js
JavaScript中遍历的十种方法总结
2020/12/15 Javascript
[52:02]完美世界DOTA2联赛PWL S2 FTD.C vs SZ 第一场 11.27
2020/11/30 DOTA
python中requests使用代理proxies方法介绍
2017/10/25 Python
Python实现PS滤镜特效Marble Filter玻璃条纹扭曲效果示例
2018/01/29 Python
浅谈Python中的私有变量
2018/02/28 Python
PyQt5实现拖放功能
2018/04/25 Python
详解css3 flex弹性盒自动铺满写法
2020/09/17 HTML / CSS
英国现代家具和装饰网站:PN Home
2018/08/16 全球购物
英国领先的男装设计师服装独立零售商:Repertoire Fashion
2020/10/19 全球购物
几道PHP的面试题
2012/05/19 面试题
某公司的.net工程师面试题笔试题
2013/11/22 面试题
男方父母婚礼答谢词
2014/01/25 职场文书
竞选大队长演讲稿
2014/04/29 职场文书
学校周年庆活动方案
2014/08/22 职场文书
关于运动会的广播稿(10篇)
2014/09/12 职场文书
优秀团支部申报材料
2014/12/26 职场文书
求职简历自我评价2015
2015/03/10 职场文书
2016领导干部廉洁自律心得体会
2016/01/13 职场文书