requests库中content和text调用的区别

requests库中content和text调用的区别

起因

最近,在使用python的requests库抓取一些网站基本信息的时候。使用r.text提取信息。发现经常会有乱码。即使原网站的原始编码就是utf-8. 后来发现,改成r.content就没问题。

区别

二者的区别在于content返回的是byte型数据,而text返回的是Unicode数据,也就是说text对原始数据进行的特殊的编码,而这个编码方式是基于对原始数据的猜测(响应头),

所以,如果网站的返回头如果没有制定编码,则r.text获取到的内容则可能编码出现错误。

如:Content-Type: text/html; charset=utf-8

所以,一般情况下建议用r.content。然后自己进行重新编码。

如果非要用text则可使用r.encoding = 'ISO-8859-1'指定编码格式。