python爬虫系列二:requests-乱码处理(2)

在转码之前,我们首先了解一下常识:

  1. 编码方式属性encoding:gbk,utf-8,寻找编码方式,找meta下的charset
  2. 转码函数:decode,encode
  3. rp.content本身就是字节流形式
  4. 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

猜你喜欢

转载自blog.csdn.net/qq_42787271/article/details/81564413
今日推荐