m0_5552 2021-09-07 15:35 采纳率: 66.7%
浏览 36
已结题

Python爬虫利用requests库获得text乱码解决方法中的疑惑

学习Python爬虫中对解决方法的疑惑,请了解的朋友帮忙解解惑(本文第三点中的疑惑).谢谢.

一,乱码问题

import requests

response=requests.request('get','https://www.baidu.com')
print(response.text)

结果显示的文本中含有如下红框中的乱码:

img

二,解决办法
解决方法是:先取得响应response的content,再对content进行decode()解码,就可以正常显示中文.

img

三,针对本解决方法中的疑惑
使用"print(help(response))"查看响应对象所属类的帮助信息,其中关于"text"的描述如下:
表示response.text是unicode编码

img

使用"print(help(response.content))"查看帮助信息,其中有关信息如下:
表示response.content是一个bytes类型.

img

同时response.content具有decode()方法,该方法默认使用utf-8解码.

img

那么现在的疑问来了,python内部本来就是使用的unicode编码,response.text()不正好也是unicode编码吗?怎么会有乱码呢?
而对其字节流解码成unicode却就没有乱码了.

  • 写回答

1条回答 默认 最新

  • Pliosauroidea 2021-09-07 15:41
    关注

    因为百度似乎用了一个神奇的编码方式

    img


    .text估计就是使用了这个编码方式导致无法读取

    img

    而context.decode使用的是默认的utf-8所以能正确读出来
    以上都是我猜的()
    有帮助望采纳

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月7日
  • 创建了问题 9月7日

悬赏问题

  • ¥15 如何入门学习c语言,单片机
  • ¥15 idea 编辑语言的选择
  • ¥15 Windows下部署Asmjit
  • ¥15 请问双层规划模型的上下层目标函数不一致,是如何保证迭代收敛性的
  • ¥15 微信小程序 前端页面内容搜索
  • ¥15 cpu是如何判断当前指令已经执行完毕,然后去执行下条指令的
  • ¥15 安装visual studio2022时visualstudiosetup启动不了,闪退。问题代号0x0和0x1389
  • ¥30 java spring boot2.5.3版本websocket连不上
  • ¥15 angular js调外部链接查看pdf
  • ¥15 openFOAM DPMFoam