Python非常详细编程笔记 中文PDF版
windows 7 系统下爬虫抓取提示如下错误
'gbk' codec can't encode character '\xa0' in position 2966: illegal multibyte sequence
代码如下:
base_url = php_params[]
urlb = urllib.request.(base_url)
cent = urlb.read()
soup = BeautifulSoup(cent,)
:
soup = BeautifulSoup(cent,)
(soup)
err:
(err)
【问题原因】
对于此Unicode字符(myUnWebItems),需要print出来的话,由于本地系统是Windows中的cmd,默认codepage是CP936,即GBK的编码,所以python解释器需要先将上述的Unicode字符myUnWebItems编码为GBK,然后再在cmd中显示出来。
但是由于myUnWebItems中包含一些GBK中无法显示的字符,导致此时提示“’gbk’ codec can’t encode”的错误的。
【解决办法】
方案1:
在对unicode字符编码时,添加ignore参数,忽略无法无法编码的字符,这样就可以正常编码为GBK了。
对应代码为:
print(soup.encode("GBK", 'ignore'));
方案2:
或者,将其转换为GBK编码的超集GB18030 (即,GBK是GB18030的子集):
修改后正确代码如下;
base_url = php_params[]
urlb = urllib.request.urlopen(base_url)
cent = urlb.read()
soup = BeautifulSoup(cent,)
:
soup = BeautifulSoup(cent,)
(soup.encode(, ))
err:
(err)
print(soup.encode("GB18030"))
对应的得到的字符是GB18030的编码。
转载请注明:谷谷点程序 » Python3 爬虫 BeautifulSoup模块(5):'gbk' codec can't encode character '\xa0' in position 2966: illegal multibyte sequence