python中 |
您所在的位置:网站首页 › 爬虫怎么做表格 › python中 |
requests是一个较为简单易用的HTTP请求库,是python中编写爬虫程序最基础常用的一个库。 而【中文乱码】问题,是最常遇到的问题,对于初学者来说,是很困恼的。 本文将详细说明,python中使用requests库编写爬虫程序时,出现【中文乱码】的原因,及常见3种解决办法。 一、【中文乱码】情况及出现原因 (一)【中文乱码】举例首先,本文的【中文乱码】情况,指的是原网页中的中文内容在使用requests获取后,中文完全无法识别的情况,区别于\x、\u等编码情况。如下图中的例子: 导致上图中【中文乱码】的原因: 使用requests库时,选择使用的文本响应方法不合适,且没有在代码中添加设置合适的编码,以致于使用【response.text】自动获取到的网页编码,与实际网页的编码不一致,进而产生【中文乱码】。 使用requests库时,可能已经形成了一个习惯,常用【response.text】进行文本响应,而【response.content】常用于图片、视频等。 这两者,最大的一个区别就是: 1、【response.text】会自动根据HTTP头部去推测网页的编码,解码并返回解码后的文本。 2、【response.content】不会解码,直接以二进制形式返回。 两种文本响应方法,如下表: 方法释义response.text服务器响应的内容,会自动根据响应头部的字符编码进行解码。根据HTTP头部对响应的编码做出有根据的推测,推测文本编码。返回类型:str;常用于:响应文本response.content字节方式的响应体,不会根据HTTP头部对响应的编码做出有根据的推测。返回类型:bytes(二进制);常用于:图片、视频 二、3种处理【中文乱码】的方法 (一)修改网页文本获取的方法据上,已知原因是获取文本的方法不对,显然最简单、直接的方法就是: 直接将response.text换成response.content 据上,已知使用【response.text】时,会解码返回,但解码又与原网页编码不一致,而导致【中文乱码】。 鉴于response也提供了【response.encoding】,来指定返回后的网页编码。 所以解决方法可以是: 手动指定网页编码,使之得到正常的文本 该方法的较第一种,相对麻烦一点: 首先,需要确认原网页的实际编码,然后根据网页实际编码做出修改。 具体步骤如下: 1、查看网页编码 查看网页编码,有以下两种方式: (1)直接打开网页源码(html)【Ctr+U】,查看编码:【charset】的值。 以(1)中网址为例,网页的真实编码为【GB2312】。 使用encoding、apparent_encoding两种方法,所得的结果是不一致的,apparent_encoding才是原网页实际编码。如下图: 除了以上2种解决办法外,还可以使用pyhton自带的编码方法,把【中文乱码】的内容再次进行转码,转换为成网页实际的编码格式即可。 转码方式:encode(‘iso-8859-1’).decode(‘编码格式’) 如上面例子中,网页编码实际为“gb2312”,代码可修改为: -end 学习资源推荐零基础Python学习资源介绍 👉Python学习路线汇总👈 Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(学习教程文末领取哈) 👉Python必备开发工具👈 温馨提示:篇幅有限,已打包文件夹,获取方式在:文末 👉Python学习视频600合集👈 观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。 👉实战案例👈 光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。 👉100道Python练习题👈 检查学习结果。 上述这份完整版的Python全套学习资料已经上传CSDN官方,朋友们如果需要可以微信扫描下方CSDN官方认证二维码输入“领取资料” 即可领取。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |