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'
指定编码格式。