在转码之前,我们首先了解一下常识:
- 编码方式属性encoding:gbk,utf-8,寻找编码方式,找meta下的charset
- 转码函数:decode,encode
- rp.content本身就是字节流形式
- rp.text字符串形式
人工转码
decode,encode,encoding
#人工转码
#转码函数:decode(),encode()
import requests
res=requests.get("http://ibeifeng.com")
#print(res.content.decode("gbk"))#字节流(bytes)->字符串(str)
#print(res.text.encode("gbk")) #字符串(str)->字节流(bytes)
#如果出现乱码,就需要转换编码方式,
#encoding 编码方式属性,设置text编码格式
res2=requests.get("http://www.baidu.com")
res2.encoding="utf-8"#直接打印出text格式会有乱码出现
print(res2.text)#字符串
自动处理乱码
chardet模块是字符串、文件编码的检测模块
res2.status_code是状态码,200是正常
chardet.detect(rp.content)[encoding]
这句话是规定的,不用更改
#字符串、文件编码检测模块
import chardet
#自动获取网页编码,返回字典
#print(chardet.detect(res2.content))
#answer:{'encoding': 'utf-8', 'confidence': 0.99, 'language': ''}
#自动获取网页的编码然后赋值给相应的内容的encoding属性
#res2.encoding=chardet.detect(res2.content)["encoding"]
#常见的自动转码用chardet.detect(rp.content)[encoding]都可以识别出来
import requests
import chardet
res2=requests.get("http://www.baidu.com")
res2.encoding=chardet.detect(res2.content)["encoding"]
print(res2.text)
#状态码
print(res2.status_code)
answer:200