Python爬虫中文乱码的几种解决办法

系统 1488 0

中文乱码的解决方法

爬虫最常见的问题是返回的数据中文乱码,对于爬虫小白来说这样的问题几乎不可避免,不过别担心,我这里有好几种解决中文乱码的方法,总有一款适合你。

方法一:

采用我这里代码里的这种方法,先在代码头设置编码方式为 " UTF-8" ,UTF-8 是保存中文字符的通用代码。然后,添加如下代码,一般都能解决中文乱码问题。

            
              #如果目标网页编码与本地不一致,修改本地默认编码方式(防止输出中文乱码)
if sys.getdefaultencoding() != resp.encoding:            #resp.encoing用于查询网页所采用的编码格式
    reload(sys)
    sys.setdefaultencoding(resp.encoding)                #设置本地编码格式与网页的编码格式相同
            
          

 方法二:

这里先补充几个知识点:

 

  • decode -----把当前字符解码成Unicode编码
  • encode-----把Unicode编码格式的字符编码成其他格式的编码
  • Python默认使用Unicode字符集,做编码转换时,要把Unicode作为中间编码,先decode(解码)成Unicode编码,再encode(编码)成其他编码。
  • 非Unicode编码不能直接encode成其他编码,否则会报错。
  • 用requests模块获得response对象,已经预先对于网页的编码格式(通过网页的Head头里的charset =XXX)做出判断,用resp.text得到的内容是解码之后的内容,不需要再次解码。
  • 而用resp.content 得到的内容是未解码的二进制字节流,要先decode(解码),再encode(编码)
            
              #text输出的数据由request自动解码(把bytes型数据变成Unicode字符),只需要把Unicode编码成utf-8输出就行
 respText1= resp.text.encode('utf-8','ignore')

#content的内容需要手动解码成unicode再编码成utf-8等其他编码
 respText2 = resp.content.decode('utf-8','ignore').encode('GBK','ignore')
            
          

 

方法三:

如果是在Pycharm中编程可以把图中圈起来的地方全部改成UTF-8,简单粗暴。

  Python爬虫中文乱码的几种解决办法_第1张图片

如果上面三种方法都试过了还是不行,可能就是网上说的网页下载时有压缩的缘故了,具体的解决方法参考以下链接:

https://blog.csdn.net/Dream_Hongyu/article/details/50478265

 


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论