Python爬⾍之⽹页编码格式查询与编码格式详解
学了爬⾍之后,我⼀直在纠结⼀个问题,那就是decode与encode
在这我也分享⼀下我的见解
⾸先我们都知道不同⽹页的编码格式是不⼀样的
查询⽅法如下:
当我们知道编码格式后就可以解析⽹页并转换格式
代码是这样的
url = " ⽹-----------址 "
a = quest.urlopen(url)
result = a.read().decode('gbk') # 读取源代码并转为unicode
浅谈encode与decode的区别:
decode的作⽤是将其他编码的字符串转换成unicode编码,如str1.decode('gb2312'),表⽰将gb2312编码的字符串str1转换成unicode编码。
encode的作⽤是将unicode编码转换成其他编码的字符串,如de('gb2312'),表⽰将unicode编码的字符串str2转换成gb2312编码。
因此,转码的时候⼀定要先搞明⽩,字符串str是什么编码,然后decode成unicode,然后再encode成其他编码
代码中字符串的默认编码与代码⽂件本⾝的编码⼀致。
如:s=‘中⽂’
如果是在utf8的⽂件中,该字符串就是utf8编码,如果是在gb2312的⽂件中,则其编码为gb2312。这种情况下,要进⾏编码转换,都需要先⽤decode⽅法将其转换成unicode编码,再使⽤encode⽅法将其转换成其他编码。通常,在没有指定特定的编码⽅式时,都是使⽤的系统默认编码创建的代码⽂件。
如果字符串是这样定义:s=u’中⽂’
则该字符串的编码就被指定为unicode了,即python的内部编码,⽽与代码⽂件本⾝的编码⽆关。因此,对于这种情况做编码转换,只需要直接使⽤encode⽅法将其转换成指定编码即可。
如果⼀个字符串已经是unicode了,再进⾏解码则将出错,因此通常要对其编码⽅式是否为unicode进⾏判断:
isinstance(s,unicode) #⽤来判断是否为unicode
中文字符unicode查询为了不会出现中⽂乱码,代码开头加上以下注释
# -*- coding:utf-8 -*-
主要作⽤是指定⽂件编码为utf-8, 因为⼀般默认的是ASCII码,如果要在⽂件⾥⾯写中⽂,运⾏时会出现乱码,加上这句之后会把⽂件编码强制转换为utf-8运⾏时会就不会出现乱码了。**
Unicode
Unicode为世界上所有字符都分配了⼀个唯⼀的数字编号,这个编号范围从 0x000000 到 0x10FFFF(⼗六进制),有110多万,每个字符都有⼀个唯⼀的Unicode编号,这个编号⼀般写成16进制,在前⾯加上U+。例如:“马”的Unicode是U+9A6C。
Unicode就相当于⼀张表,建⽴了字符与编号之间的联系
它是⼀种规定,Unicode本⾝只规定了每个字符的数字编号是多少,并没有规定这个编号如何存储。
UTF-8就是在互联⽹上使⽤最⼴的⼀种Unicode的实现⽅式
想了解ASCII、Unicode、UTF-8的区别与联系可以看这
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论