解决Python的requests中text中文乱码的问题

 更新时间:2025年01月09日 09:53:52   作者:Dontes_cn  
学习Python爬虫时遇到中文乱码问题,发现req.text返回的是unicode,无法再次decode,通过查看网站源码,发现网站使用的是gbk编码,Requests会自动解码来自服务器的内容,但有时推测错误,通过设置r.encoding为gbk,然后对text进行编码,可以正确打印出中文

Python的requests中text中文乱码

今天学习python爬虫是遇到了字符编码的问题

target = 'http://www.biqukan.com/1_1094/5403177.html'
req = requests.get(url=target)
print req.text

打印出来的中文都是乱码,现在说一下解决方案。

解决方案

首先要明确的是,req.text返回的是unicode,也就是说无法再decode,所以网上那些先decode再encode的方法是没法使用的,这种方法适用的是req.content。

通过查看网站源码,发现网站使用的charset是gbk,Requests 会自动解码来自服务器的内容。

大多数 unicode 字符集都能被无缝地解码。

请求发出后,Requests 会基于 HTTP 头部对响应的编码作出有根据的推测。

当你访问 r.text 之时,Requests 会使用其推测的文本编码。

你可以找出 Requests 使用了什么编码,并且能够使用 r.encoding 属性来改变它,我认为requests对编码做出了错误的判断,所以进行了下面的设置:

req.encoding='gbk'

注意,这里的gbk是因为网页使用的是gbk。

然后再对text进行编码

text = req.text
print text.encode('utf-8')

就能正确的打印出中文了

完整的代码

如下:

# coding: UTF-8
import requests

if __name__ == '__main__':
    target = 'http://www.biqukan.com/1_1094/5403177.html'
    req = requests.get(url=target)
    req.encoding='gbk'
    # content = req.content.decode('gbk').encode('utf-8')
    # print content
    text = req.text
    print(isinstance(text, unicode))
    print text.encode('utf-8')

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python中的进程操作模块(multiprocess.process)

    Python中的进程操作模块(multiprocess.process)

    这篇文章介绍了Python中的进程操作模块(multiprocess.process),文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • Python实现的各种常见分布算法示例

    Python实现的各种常见分布算法示例

    这篇文章主要介绍了Python实现的各种常见分布算法,结合实例形式总结分析了Python常见的各种分布算法相关实现技巧,包括二项分布、离散分布、泊松分布、正态分布、指数分布等算法实现方法,需要的朋友可以参考下
    2018-12-12
  • 关于PyTorch中nn.Module类的简介

    关于PyTorch中nn.Module类的简介

    这篇文章主要介绍了关于PyTorch中nn.Module类的简介,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • python 包之 Pillow 图像处理教程分享

    python 包之 Pillow 图像处理教程分享

    这篇文章主要介绍了python 包之 Pillow 图像处理教程分享,文章基于Python的相关资料展开主题相关内容,需要的小伙伴可以参考一下
    2022-04-04
  • Pandas读存JSON数据操作示例详解

    Pandas读存JSON数据操作示例详解

    这篇文章主要为大家介绍了Pandas读存JSON数据操作示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • 简单谈谈Python中的几种常见的数据类型

    简单谈谈Python中的几种常见的数据类型

    Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型。
    2017-02-02
  • Python数据预处理常用的5个技巧

    Python数据预处理常用的5个技巧

    大家好,本篇文章主要讲的是Python数据预处理常用的5个技巧,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-02-02
  • Python在Word文档中插入图片的三种方式

    Python在Word文档中插入图片的三种方式

    Word不仅仅是一个文字处理工具,它还为用户提供了图片插入功能,以增强文档的表现力,一张好的图片往往能够起到画龙点睛的作用,这篇博客将介绍使用Python在Word文档中插入图片的三种方式,需要的朋友可以参考下
    2025-02-02
  • Python range函数生成一系列连续整数的内部机制解析

    Python range函数生成一系列连续整数的内部机制解析

    这篇文章主要为大家介绍了Python range函数生成一系列连续整数的内部机制解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • python pandas实现获取指定日期所属月的月初月末

    python pandas实现获取指定日期所属月的月初月末

    这篇文章主要为大家详细介绍如何使用Python的Pandas库进行日期格式转换,并演示了如何获取月初、月末及跨月日期的方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下
    2025-12-12

最新评论