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日

悬赏问题

  • ¥100 需要跳转番茄畅听app的adb命令
  • ¥50 寻找一位有逆向游戏盾sdk 应用程序经验的技术
  • ¥15 请问有用MZmine处理 “Waters SYNAPT G2-Si QTOF质谱仪在MSE模式下采集的非靶向数据” 的分析教程吗
  • ¥50 opencv4nodejs 如何安装
  • ¥15 adb push异常 adb: error: 1409-byte write failed: Invalid argument
  • ¥15 nginx反向代理获取ip,java获取真实ip
  • ¥15 eda:门禁系统设计
  • ¥50 如何使用js去调用vscode-js-debugger的方法去调试网页
  • ¥15 376.1电表主站通信协议下发指令全被否认问题
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证