UnicodeEncodeError: 'gbk' codec can't encode character '\xa0'

本文解析了在爬虫过程中遇到的UnicodeEncodeError错误,详细解释了错误原因,即gbk编码无法处理特定Unicode字符xa0,并提供了解决思路。

版权声明:本文为CSDN博主「曾记否?」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_38607035/article/details/82595170

在写爬虫爬取网页信息时,发生了以下错误:
UnicodeEncodeError: ‘gbk’ codec can’t encode character ‘\xa0’

意思大致是Unicode编码错误,gbk编解码器不能编码\xa0字符。

错误原因

当我们获取这个网页的源代码的时候,是将这个网页用utf-8的解码方式将其转换成对应的Unicode字符,当我们使用print()函数将其打印到Windows系统的DOS窗口上的时候(DOS窗口的编码方式是GBK),自动将Unicode字符通过GBK编码转换为GBK编码方式的str。

整个过程是: [用python爬取] UTF-8(str) -> [缓存中存放] Unicode(byte) -> [DOS中显示] GBK(str)

对比原网页,发现报错的位置原本要输出的文本为空,也就是目标标签内的值为 。

网页源代码中的  的utf-8 编码是:\xc2 \xa0,转换为Unicode字符为:\xa0,当显示到DOS窗口上的时候,转换为GBK编码的字符串,但是\xa0这个Unicode字符没有对应的 GBK 编码的字符串,所以出现错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值