【python爬虫】用selenium爬时报错UnicodeEncodeError:‘gbk‘codec can‘t encode character ‘\u2022‘

在这里插入图片描述
今日在用selenium爬取拉勾网数据时,遇到如下错误:

UnicodeEncodeError: 'gbk' codec can't encode character '\u2022' in position 131907: illegal multibyte sequence

解决方案:

import io
import sys
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf-8')

查了相关资料发现原因是print()函数自身有限制,不能完全打印所有的unicode字符。

其实print()函数的局限就是Python默认编码的局限,因为系统是win7的,python的默认编码不是’utf-8’,改一下python的默认编码成’utf-8’就行了

import io  
import sys 
from urllib import request
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8') 
#改变标准输出的默认编码
url="https://www.baidu.com/"
headers="User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:83.0) Gecko/20100101 Firefox/83.0"
response=requests.get(url,headers=Headers)
print(response)

如果在cmd下运行该脚本有乱码,而在IDLE下运行却很正常。

原因是cmd不能很好地兼容utf8,而IDLE就可以,甚至在IDLE下运行,连“改变标准输出的默认编码”都不用,因为它默认就是utf8。如果一定要在cmd下运行,那就改一下编码,比如我换成“gb18030”,就能正常显示了:

sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030')  
#改变标准输出的默认编码

这里附上一些常用的和中文有关的编码的名称,分别赋值给encoding,就可以看到不同的效果了:

编码名称用途
utf8所有语言
gbk简体中文
gb2312简体中文
gb18030简体中文
big5繁体中文
big5hkscs繁体中文

参考链接:https://blog.youkuaiyun.com/jim7424994/article/details/22675759
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值