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

中文乱码的解决方法

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

方法一:

采用我这里代码里的这种方法,先在代码头设置编码方式为 " 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

 

你可能感兴趣的:(Python)