社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

盘点3种Python爬虫 中文乱码 的处理方法

Python绿色通道 • 4 年前 • 380 次点击  

↑ 关注 + 星标 ,每天学Python新技能

后台回复【大礼包】送你Python自学大礼包



人生苦短,快学Python!

给大家祭出网络爬虫过程中三种中文乱码的处理方案,希望对大家的学习有所帮助。



前言

    前几天有个粉丝在Python交流群里问了一道关于使用Python网络爬虫过程中中文乱码的问题,如下图所示。



    

  看上去确实头大,对于爬虫初学者来说,这个乱码摆在自己面前,犹如拦路虎一般难顶。不过别慌,快快在这里给大家整理了三种方法,专门用于针对中文乱码的,希望大家在后面再次遇到中文乱码的问题,在此处可以得到灵感!


一、思路

    其实解决问题的关键点就是在于一点,就是将乱码的部分进行处理,而处理的方案主要可以从两个方面进行出发。其一是针对整体网页进行提前编码,其二是针对局部具体中文乱码的部分进行编码处理。这里例举3种方法,肯定还有其他的方法的,也欢迎大家在评论区谏言。


二、分析

    其实关于中文乱码的表现形式有很多,但是常见的两种如下:

1、当出现网页编码为gbk,获取到的内容在控制台打印类似如下情况的时候:

ÃÀÅ® µçÄÔ×À ¼üÅÌ »ú·¿ ¿É°® С½ã½ã4k±ÚÖ½

2、当出现网页编码为gbk,获取到的内容在控制台打印类似下情况的时候:

�װŮ�� ��Ů ˮ СϪ Ψ��

    虽然看上去控制台输出正常,没有报错:

Process finished with exit code 0

    但是输出的中文内容,却不是普通人能看得懂的。

    这种情况下的话,就可以通过使用本文给出的三种方法进行解决,屡试不爽!

三、具体实现

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进行编码设定,指定编码并进行解码,如下图所示。


    

如此一来,中文乱码的问题就迎刃而解了。


四、总结

    本文基于粉丝提问,针对Python网络爬虫过程中的中文乱码问题,给出了3种乱码解决方法,顺利帮助粉丝解决了问题。虽然文中例举了3种方法,但是快快相信肯定还有其他的方法的,也欢迎大家在评论区谏言。

 

推荐阅读




    
  1. 我们计划招收300位Python爱好者,免费学习商业数据分析和人工智能

  2. 彻底干掉了 Windows 的 cmd,爽!

  3. 再见了Python爬虫,商业分析已成气候!


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/125501