爬虫问题

报错的异常是 

UnicodeDecodeError: ‘gbk’ codec can’t decode bytes in position 2-3: illegal multibyte sequence

【Python中如何处理UnicodeDecodeError和UnicodeEncodeError】

Unicode的解码(Decode)出现错误(Error)了

而对于上面这句,我们可以推断出:

你当前正在处理某种编码类型的字符串

此处你要处理字符串,是想要将该字符串去解码decode,变成Unicode

但是将该字符串解码变成Unicode期间,却出错了

(2)所用的是何种编码

好的,接着看上面的错误:

‘gbk’ codec can’t decode

使得错误信息更加明显了:

你此处,要将字符串解码为Unicode,是以gbk编码的方式去解码(该字符串变成Unicode)的

但是此处通过gbk的方式,却无法解码(can’t decode )

注:此处的codec,意思是:编解码(器),是Python内部的模块,用来编码或解码(字符串)的

(3)错误位置

bytes in position 2-3

此处的信息,后续一般也很少用到。

有时候会用于定位具体错误的位置。

此处暂且忽略。

(4)错误的细节错误类型

illegal multibyte sequence

翻译为中文为:

非法的,多字节,序列

简单说就是:

没法(解码)了。

【原因及解决办法】

好了,针对于上面所分析出来的信息:

将一个字符串,通过gbk的方式,去解码,想要获得Unicode字符串,结果出错了

我们来说说原因和解决办法:

此种错误,有几种可能: 

(1)要处理的字符串本身不是gbk编码,但是你却以gbk编码去解码 

比如,字符串本身是utf-8的,但是你却用gbk去解码utf-8的字符串,所以结果不用说,则必然出错

则必然会出现这类的错误,说是,用gbk的方式去解码字符串,想要获得Unicode字符串,但是结果却解码出错了

解决办法:

如果你确定当前字符串,比如抓取网页通过charset=utf-8,已经确定html的字符串是utf-8的,

则可以直接去通过utf-8去解码。

你可能感兴趣的:(爬虫问题)