requests请求的响应内容能够通过几个属性获得:

response.text

为解码之后的内容,解码会根据响应的HTTP Header中的Content-Type选择字符集。例如

1
"'Content-Type': 'text/html;charset=UTF-8'"

就会使用“UTF-8”解码。可通过访问response.encoding获得当前使用的字符集。

也可修改使用的字符集

1
response.encoding = 'UTF-8'

这样再次调用response.text的时候,会返回UTF-8解码的内容。

response.content

为二进制内容,并且已经自动对传输中使用的gzip和deflate编码进行了解码。

response.raw

为原始的响应内容,可以用来做一些分析。只是需要在初始化的时候加上参数stream=True,不然获取到的值为b''。但需要注意的是,添加参数(stream=True)之后,text和content都不能使用了。。。都会报错:

1
requests.exceptions.ChunkedEncodingError: ('Connection broken: IncompleteRead(102 bytes read)', IncompleteRead(102 bytes read))

response.json()

这一般用于已知返回数据格式为JSON字符串的情况。如果返回的是不可用的JSON数据会抛出异常:

1
ValueError: No JSON object could be decoded

回到遇到的问题上来:

1
'utf8' codec can't decode byte 0x83 in position 1: invalid start byte

该问题发生在调用response.content.decode()时。

解决办法:

  1. 去掉请求HTTP Header中的gzip:

1
"accept-encoding": "gzip, deflate, br",

  2. 对原始内容进行gzip解压处理

最新文章

  1. python fabric install
  2. RDIFramework.NET ━ 9.9 角色权限管理 ━ Web部分
  3. Word Ladder II
  4. Camera 幻灯片播放
  5. oracle批量导出AWR报告
  6. linux make clean
  7. O-C相关06:self和super关键字介绍——self关键字
  8. HDU 5791 Two
  9. Make Yahoo! Web Service REST Calls With C#
  10. Android该系统提供的服务--Vibrator(振子)
  11. crawler_phantomjs_windows_linux下demo
  12. spring-framework-reference阅读笔记(一)
  13. 从实践的角度理解cookie的几个属性
  14. 常用七大经典排序算法总结(C语言描述)
  15. delphi Ctrl+鼠标左键或者Find Declaration不能定位到源文件
  16. 从分治算法到 Hadoop MapReduce
  17. stm32-arduino-f103
  18. C#学习笔记(35)——事件做的登录案例
  19. js 正则判断字符串下划线的长度
  20. Cracking The Coding Interview 4.1

热门文章

  1. Flutter for web
  2. Dart: 执行shell命令
  3. TYLER ADAMS BRADBERRY的私人投资分享
  4. django学习-10.django连接mysql数据库和创建数据表
  5. Java自学第2期——注释、数据类型、运算符、方法
  6. JQuery:JQuery基本语法,JQuery选择器,JQuery DOM,综合案例 复选框,综合案例 随机图片
  7. vue之下拉菜单Dropdown的使用
  8. 博客数据库要连接Elasticsearch,使用MySQL还是MongoDB更合理
  9. Java 程序员每天都在做什么?
  10. jQuery实现游戏推荐