当前位置: 首页 > 科技观察

盘点Python网络爬虫过程中处理中文乱码的三种方法

时间:2023-03-20 10:23:32 科技观察

大家好,我是Python进阶。前几天跟大家分享了一些关于乱码的文章。感兴趣的朋友可以去:UnicodeEncodeError:'gbk'codeccan'tencodecharacter解决方法,这里再给大家介绍一下网页爬取过程中出现的三种中文乱码的解决方法,希望对大家的学习有所帮助。前言前几天有粉丝在Python交流群里问了一个关于使用Python网络爬虫过程中出现中文乱码的问题,如下图。它看起来确实像一个大头。对于爬虫初学者来说,这段乱码就像是挡在他们面前的绊脚石。不过不用慌,小编在这里为大家整理了三种方法,专门针对中文乱码的。希望大家以后再遇到中文乱码的问题,可以在这里得到启发!1、想法其实是为了解决问题。重点在于一点,就是对乱码部分的处理,处理方案主要可以从两个方面着手。一种是对整个网页进行预先编码,另一种是针对某些特定的中文乱码部分进行编码。这里举三个方法的例子,肯定还有其他的方法,欢迎大家在评论区提意见。二、分析其实中文乱码的表现形式有很多,但常见的有以下两种:1、当网页编码为gbk,在控制台打印出获取的内容类似如下情况:à??μ???×à?ü?ì?ú·??é°?D?????4k±ú??2.当网页的编码为gbk时,控制台打印出的内容类似如下情况:?????????С?虽然看起来控制台输出是正常的,但是并没有报错:Processfinishedwithxitcode0但是输出的是中文内容不是一般人能看懂的。遇到这种情况,你可以使用本文给出的三种方法来解决,这三种方法都经过实践检验!3、具体实现1)方法一:把requests.get().text改成requests.get().content我们可以看到通过text()方法得到的源码再打印出来,确实会有乱码,如下图所示。此时可以考虑将请求改为.content,获取到的内容就正常了。2)方法二:手动指定网页编码#手动设置响应数据的编码格式response.encoding=response.apparent_encoding这种方法稍微复杂一点,但是比较容易理解,初学者比较容易接受。如果觉得上面的方法比较难记,也可以尝试直接指定gbk编码来处理,如下图:上面介绍的两种方法都是针对网页的整体编码,效果很了不起。接下来第三种第一种方法是用通用的编码方式来处理中文的局部乱码部分。3)方法三:使用通用编码方式img_name.encode('iso-8859-1').decode('gbk')使用通用编码方式设置乱码汉字的编码方式。还是在当前例子中,为img_name设置编码,指定编码并解码,如下图所示。这样一来,中文乱码的问题就迎刃而解了。4.总结我是Python进阶。本文基于粉丝的提问,针对Python网络爬虫过程中出现的中文乱码问题,给出了3种乱码解决方案,成功帮助粉丝解决了问题。