Python requests请求页面返回乱码问题
2022-03-14 本文已影响0人
Tony_Pm
序言
有时候在通过Python爬取网页数据的时候,比如抖音、快手等短视频数据;网页会返回乱码;这种乱码数据,不管是gb2312、utf-8、gbk、亦或者使用gbk的超集gb18030等编码都毫无用处。看下图。
image.png原因出在一个参数上 'accept-encoding': 'gzip, deflate, br'
gzip是一种数据格式;默认且目前仅使用deflate算法压缩data部分,这种方法常用于压缩传输。
image.png普通浏览器在访问网页时,之所以要添加 'accept-encoding': 'gzip, deflate, br' ;是因为,浏览器对于从服务器中返回的对应的gzip压缩的网页,会自动解压缩,所以,在requests的时候,添加对应的请求头,来表明自己接收压缩后的数据。
而在上面的代码中,如果也添加此头的信息,结果就是,返回的是压缩后的数据,没有解码,直接将压缩后的数据当做普通的html文本来处理,所以显示出来的内容,就是乱码了。(看到这里是不是有种恍然大悟😄)
如果还不理解再直白点:就是服务器数据返回给客户端时候已经被gzip压缩了,而你的程序里面没有自动解压而已。