python 爬虫 respone.text 和 response.content 区别

response.text

类型:str
response.text 返回的是Unicode格式的数据
解码类型: 根据HTTP 头部对响应的编码作出有根据的推测,推测的文本编码
修改编码方式:response.encoding=”gbk”

使用response.text 时,Requests 会基于 HTTP 响应的文本编码自动解码响应内容,大多数 Unicode 字符集都能被无缝地解码。

response.content

类型:bytes
response.content返回的字节流数据
解码类型: 没有指定
修改编码方式:response.content.deocde(“utf8”), 可以不写默认就是utf-8

使用response.content 时,返回的是服务器响应数据的原始二进制字节流,可以用来保存图片等二进制文件。

 

更推荐使用response.content.deocde()的方式获取响应的html页面
当收到一个响应时,Requests 会猜测响应的编码方式,用于在你调用response.text 方法时对响应进行解码。Requests 首先在 HTTP 头部检测是否存在指定的编码方式,如果不存在,则会使用 chardet.detect来尝试猜测编码方式(这样存在误差),所以更推荐使用response.content.deocde()

 

 

response.text 得到的是文本 str类型

response.content 得到的是 视频 ,图片等 byte ,二进制类型。

你如果要保持图片、视频, 用的是text 就是一堆乱码。

如果采用到正则表达式抓取,要用response.text ,否则出错。

如果既要用xpath抓取,又要用正则表达式抓取,则要用response.text,当然此时保存视频和图片可能会出问题。

如果只是用xpath抓取,建议用response.content