python中——requests爬虫【中文乱码】的3种解决方法

这篇具有很好参考价值的文章主要介绍了python中——requests爬虫【中文乱码】的3种解决方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

requests是一个较为简单易用的HTTP请求库,是python中编写爬虫程序最基础常用的一个库。
而【中文乱码】问题,是最常遇到的问题,对于初学者来说,是很困恼的。
本文将详细说明,python中使用requests库编写爬虫程序时,出现【中文乱码】的原因,及常见3种解决办法。

一、【中文乱码】情况及出现原因

(一)【中文乱码】举例

首先,本文的【中文乱码】情况,指的是原网页中的中文内容在使用requests获取后,中文完全无法识别的情况,区别于\x、\u等编码情况。如下图中的例子:
python requests乱码,爬虫,python,爬虫,开发语言
注:requests.get()方法,返回一个response对象,其存储了服务器响应的内容。

(二)出现【中文乱码】原因

导致上图中【中文乱码】的原因:
使用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
python requests乱码,爬虫,python,爬虫,开发语言

(二)手动指定网页编码、再提取文本

据上,已知使用【response.text】时,会解码返回,但解码又与原网页编码不一致,而导致【中文乱码】。
鉴于response也提供了【response.encoding】,来指定返回后的网页编码。
所以解决方法可以是:
手动指定网页编码,使之得到正常的文本
该方法的较第一种,相对麻烦一点:
首先,需要确认原网页的实际编码,然后根据网页实际编码做出修改。
具体步骤如下:
1、查看网页编码
查看网页编码,有以下两种方式:
(1)直接打开网页源码(html)【Ctr+U】,查看编码:【charset】的值。
python requests乱码,爬虫,python,爬虫,开发语言
(2)使用response的encoding、apparent_encoding,得到网页编码。
encoding、apparent_encoding两者最大的区别:
encoding是从header中去提取,而apparent_encoding是从网页源码去解析,apparent_encoding得到的结果更准确。
详细如下表:

属性 释义
response.encoding 从网页响应的header中,提取charset字段中的编码。若header中没有charset字段,则默认为ISO-8859-1编码模式,ISO-8859-1编码无法解析中文,这也是中文乱码的原因。
response.apparent_encoding 从网页的内容中(html源码)中分析网页编码的方式。所以apparent_encoding比encoding更加准确,获取到的才是原网页的实际编码。

以(1)中网址为例,网页的真实编码为【GB2312】。
使用encoding、apparent_encoding两种方法,所得的结果是不一致的,apparent_encoding才是原网页实际编码。如下图:
python requests乱码,爬虫,python,爬虫,开发语言
2、手动指定文本编码
根据上述方法,获得原网页的实际编码后,手动在代码中指定文本编码格式,即可解决【中文乱码】问题。
写法有2种,可任选其一,如下图:
python requests乱码,爬虫,python,爬虫,开发语言

(三)在文本获取后对【中文乱码】进行转码

除了以上2种解决办法外,还可以使用pyhton自带的编码方法,把【中文乱码】的内容再次进行转码,转换为成网页实际的编码格式即可。
转码方式:encode(‘iso-8859-1’).decode(‘编码格式’)
如上面例子中,网页编码实际为“gb2312”,代码可修改为:
python requests乱码,爬虫,python,爬虫,开发语言
以上就python使用requests库编写爬虫时,出现【中文乱码】的原因,及常见的三种处理方法,可供参考。

-end文章来源地址https://www.toymoban.com/news/detail-659072.html

到了这里,关于python中——requests爬虫【中文乱码】的3种解决方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • response 中文乱码的两个解决方法

    使用输出流输出数据是一种编码解码的过程,输出流对象是从response获取出来的,源头上就是从Tomcat中取出来的,Tomcat试用的编码是ISO-8859-1,而浏览器默认的编码是操作系统的字符集,也就是GBK,由于编码和解码的字符集不同,所以造成了乱码的结果。 解决的思路就是告诉浏

    2024年02月11日
    浏览(40)
  • Java Web中文乱码,解决方法!!

    首先第一点便是html页面乱码问题 例如: 此时我们需要在项目中找到该网页的html文件,在html文件头部中找到 meta charset=“”; 然后将meta中的charset改为charset=“UTF-8” 如下图示: 在debug中我们可以看到,在html界面的输入框中输入中文,在Servlet中进行处理时会出现乱码问题。

    2024年02月05日
    浏览(52)
  • IDEA中解决中文乱码问题的方法

    在IDEA中创建的java项目,会遇到一些中文乱码问题。一般都是在控制台上会显示中文乱码。 则可以用以下几种方式进行操作。 在IDEA左上角File----Setting中找到文件编码,如下: 如果使用的有Tomcat服务器的话,可以进行如下操作: 在IDEA上方菜单栏中找到Help----Edit Custome VM Opti

    2024年02月09日
    浏览(74)
  • 爬虫—响应页面乱码问题解决方法

    案例:腾牛网图片抓取 源代码如下: 执行之后,报错如下: 解决办法: 方法一,设置解码格式为’GBK’ 运行结果如下: 方法二,自动获取解码格式

    2024年01月21日
    浏览(45)
  • windows 解压文件出现乱码 7zip解压文件中文乱码 解决方法

    按照如下教程,更改windows默认编码格式为utf-8之后。 https://blog.csdn.net/qq_43780850/article/details/129122210 解压文件时,文件中的中文出现乱码。原因是压缩文件的格式为GBK,而我将windows平台的默认编码改成了UTF-8,导致解压出现乱码。此时只需要按照上面的教程,取消勾选utf-8支持

    2024年02月13日
    浏览(52)
  • Hive中处理中文乱码问题的解决方法

    中文乱码是在处理大数据时经常遇到的问题之一,尤其是在使用Hive进行数据分析和查询时。本文将介绍一些解决Hive中文乱码问题的方法,并提供相应的源代码示例。 设置Hive的字符集编码 在Hive中,可以通过设置字符集编码来解决中文乱码问题。通过在Hive会话中设置\\\"client.

    2024年02月04日
    浏览(40)
  • VBA编辑器中文乱码的解决方法

    在VBA(Visual Basic for Applications)编辑器中,有时候会遇到中文乱码的问题。这可能是由于编码设置不正确或者字体不支持中文字符所导致的。在本文中,我将向您介绍一些解决VBA编辑器中文乱码问题的方法。 更改VBA编辑器的字体: 有时候,VBA编辑器默认的字体不支持中文字符

    2024年02月04日
    浏览(60)
  • 记录解决vscode的终端中文乱码的方法

     今天在编译运行以上猜数字代码时,发现vscode的终端中文存在乱码现象 然后CSDN上参考了文章解决vscode的终端中文乱码的方法 了解到主要是vscode和power shell两部分编码存在不统一的问题 使用chcp指令,可以查询当前终端上的编码类型 活动代码页:936 代表当前终端采用的是g

    2024年02月16日
    浏览(51)
  • Qt中出现中文乱码的原因以及解决方法

    Qt专栏: 目录 1.引言 2.原因分析 3.源文件的编码格式修改方法 4.程序内部使用的默认编码格式修改方法 5.QString转std::string的方法 6.总结         在编写Qt程序的时候,或多或少都可能遇到用QString时候,明明自己写的是中文,但是在界面上显示出来却是乱码,最终的原因都是

    2024年04月15日
    浏览(42)
  • 最简单的VSCode解决中文乱码方法(亲测有用)

    解决VSCode输出中文乱码问题 前言 一、问题的起因 二、解决方法 1.进入setting.json文件 2.输入代码 3.验证 总结         在刚接触VSCode编程过程中,经常会遇到中文乱码的问题。查询了不少相关的博客,解决方法很多,但实际没有帮到我,琢磨了半天,找到了可行方法,这里

    2024年02月05日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包