Python requests在作为代理爬虫节点抓取不同字符集网址的时候会遇到一些编码的问题,通过查找资料将自己理解的内容总结以下:
1、编码和解码
编码:unicode——str(encode())
eg:str2.encode('utf-8')表示将unicode字符串str2转换成用utf-8格式编码的字符串
解码:str——unicode(decode())
eg:str1.decode('gb2312'):表示将gb2312编码的字符串str1解码成unicode
2、requests的text()和requests的content()的区别
requests在获取网络资源后,可以通过两种模式查看内容,一个是r.text,一个是r.content。
r.text返回的是处理过的Unicode型的数据(根据设置的encoding来解码)
r.content:返回的是bytes型的原始数据。也就是说,r.content相对于r.text来说节省了计算机资源,r.content 是把内容bytes返回,而r.text是decode成unicode。(返回的内容是二进制内容)
3、r.encoding和r.apparent_encoding的区别
r.encoding:从HTTP header中猜测的响应内容编码方式,如果header中存在charset字段,说明访问的服务器对它的资源的编码方式是有要求的,可以使用r.encoding来获取。
r.apparent_encoding:根据网页内容分析出的编码方式。如果header中不存在charset字段,则认为默认编码为ISO-8859-1,但是这个编码不能解析中文,因此可以用r.apparent_encoding来解码。
4、requests获取编码的方式
get_encoding_from_content:d
get_encoding_from_headers
chardet.detect