使用Python爬虫的时候,往往使用的是requests库进行网页请求,而网页请求之后返回的text是属于unicode编码的响应内容,有的时候编码没有问题,但是有的时候又是奇怪。得到的内容是经过编码的。
今天,再使用Python爬取百度贴吧的时候,返回的百度贴吧名字就是经过编码的,返回的是\u开头的文本。也别管了,先查询一下前人经验,原来是属于unicode编码,所以要把他转回去的意思。但是又不可以直接转,而是先转raw bytes 再转回
首先我们现有type()查看下是属于什么类型
如果:type(text) is
那么:text.decode('unicode_escape')
如果:type(text) is
那么:text.encode('latin-1').decode('unicode_escape')
注:去掉latin-1一样成功
注:Latin1是ISO-8859-1的别名,在Python环境下写作latin-1。ISO-8859-1编码是单字节编码,向下兼容ASCII,其编码范围是0x00-0xFF,0x00-0x7F之间完全和ASCII一致,0x80-0x9F之间是控制字符,0xA0-0xFF之间是文字符号。
decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode('gb2312'),表示将gb2312编码的字符串str1转换成unicode编码。
encode的作用是将unicode编码转换成其他编码的字符串,如str2.encode('gb2312'),表示将unicode编码的字符串str2转换成gb2312编码。
领取专属 10元无门槛券
私享最新 技术干货