最新消息: 新版网站上线了!!!

Python3 爬虫 BeautifulSoup模块(5):'gbk' codec can't encode character '\xa0' in position 2966: illegal multibyte sequence

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