Excel中怎样计算面积? Excel制作计算圆面积工具的教程-英雄云拓展知识分享
125
2023-11-13
【摘要】 本书摘自《Python网络爬虫 从入门到精通》一书中第1章,第3节,李迎著。
1.3.2.3. 编码格式识别
一份字节数据,如何判断它该以何种方式解码?可以使用一个第三方库chardet, 使用 “pip install chardet” 命令安装后导入该库,使用 detect 方法来判断字节数据的编码格式。
在使用 Python中经常遇到的编码问题大多数都是编码与解码不一致产生的,下面就针对Python 编程过程中一些常见的编码问题来举例说明。
1)文件读写
当我们使用Python 打开一个文本文件时,提示“Unicode Decode Error:'gbk'codec can't decode byte Oxxx in position XX”, 或者直接打开 csv 文件显示乱码,对于这类 问题首先了解系统文件的编码机制,以Windows 7系统为例,文件的默认编码方式 为GB2312, 假如我们想要打开的是一份以UTF-8 或者其他非GB 系列编码的文件, 很容易出现各类问题的。对于这类问题,可以在程序外部使用第三方软件转换文件 的编码格式,或者在代码中使用 encoding 参数指定编码格式,这种方式不仅适用于 打开文本文件,也适用于 csv 等其他文件。例如在下面的代码中提前使用encoding='utf-8',就会避免这个问题。
withopen(r'trainers.txt',encoding='utf-8')asf:
names=f.read(100)
2)网页爬取
在学习的过程中会遇到爬虫这一项内容,当需要获取的数据是数字或者英文时, 问题较少,如果获取的数据是中文数据,就有可能得到一堆乱码,这类问题产生的 原因与文件操作道理一样,即系统默认选择的编码方式与网页数据的实际编码方式不一致。
在 Python中请求网页获取数据的方式很多,这里以Requests 库为例进行说明, 当请求发出后, Requests 会基于 HTTP头部对响应的编码作出有根据的推测,并返 回一个名为r 的 Response 对象。当访问 r.text 文件时, Requests 会使用其推测的文 本编码,当Requests 的推测与实际情况不符时,就会报错误。在这个问题上,Requests 文档里已经给出了明确解决方案,即使用 r.encoding 属性来手动指定编码方式 (r.encoding='GBK'), 那么如何确定网页数据的真实编码方式呢?一般来说可以按照优先级依次查看以下三个位置:·http header 的 Content-Type 参数。
●网页头中标签的 charset 参数。●网页头中 Document 的 charset 参数。
如果以上三种方式都无法找到网页编码,可以通过 r.content 属性来获得网页的 字节数据(类似 “xe4xb8xadxe6x96x87-xe6xb5x8bxe8xafx95” 的形式),然后使用上 面提到的 chardet 库来进行识别。如果使用爬虫框架或者其他方式获取网页数据,具
体的操作方式可能略有不同,但处理编码问题的道理相同。
这里需要注意的是,有一些爬虫示例,返回的数据是这种 “xe4xb8xadxe6 … …”形式的字节数据,并不是乱码,只需要以对应的方式进行解码即可。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~