hyisangie

编解码及爬虫获取数据

计算机只能识别二进制语言,网络上传输为了方便迅速,数据的类型为字节类型【bytes类型】

python不好操作字节类型的数据,因此要把它变成字符串类型进行操作【string类型】

后端:字符串类型 > 二进制字符串类型【方便网络上数据的传输】编码 encode

了解如何编码:

字符串类型数据.encode()默认情况下是utf-8

用gbk编码:字符串类型数据.encode(encoding='gbk')

爬虫:二进制字符串类型 > 字符串类型【方便我们python操作数据】解码 decode

bytes_data.decode()

python如何将响应解码成字符串类型数据呢?

(1) 获取响应:response_ = requests.get(url) # 变量名自己取就好了

  • 这里的 response_是一个对象,不是字节类型数据,不能直接decode

(2) 得到数据并解码:用什么方式编码就要用什么方式解码

常见编码格式:utf-8, gbk,ascii...

计算机刚发明时编码格式里面只有英文,但是后来不同国家运用计算机后也有不同的编码需求,就出现了中文码(gbk),日本码,韩国码... 这样如果一个网页中有不同的编码就会有冲突,因此后来就发展出了万国码Unicode编码 其中比较常用的为utf-8

网页中的编码格式可以在 Headers 中找 charset

  • text 方法:res_ = response_.text 【一般获取文本数据时】
    • 虽然是一个方法,但是不用括号
    • res_ 是字符串类型的数据
    • text方法:从response对象得到字节类型数据后,自动将字节类型数据解码成字符串类型的数据
    • 默认情况下,text 会根据自己判断的解码方式去解码,但它可能会判断错误,导致跟网站编码方式不同,会出现乱码。大部分情况下没问题。
    • 如果你想知道text自动识别的编解码类型是什么,可以通过 response_.encoding 查询
    • 你也可以指定它的编码格式,在使用text方法之前改变编码格式,例如 response_.encoding='utf-8'
  • content方法:res_ = response.content 【一般获取多媒体数据时】
    • 从response对象中得到字节类型数据,比如图片,音乐等二进制数据没法用字符串形式体现,不能用text,只能用content
    • res_是字节类型的数据
    • 想获取字符串数据,可以和decode一起用,将字节数据转换成字符串数据 data_ = res_.decode(),这里的data_就是字符串数据类型。

posted on 2021-08-14 09:04  hyisangie  阅读(151)  评论(0编辑  收藏  举报

导航