icodeEncodeError: 'gbk' codec can't encode character '\xe5' in position 259: illegal multibyte seq问题

本文详细介绍了在使用Python的requests库抓取网页时遇到的编码错误问题,特别是UnicodeEncodeError,并提供了有效的解决方案,包括正确设置文件编码和使用response.content进行解码。

在保存网页信息时 出现的标题错误

response=requests.get('http://www.runoob.com/w3cnote/python-ten-minute-introductory-tutorial.html')
print(response.text)
with open('python01.html','w+') as f:
    f.write(response.text)

出现了
UnicodeEncodeError: 'gbk' codec can't encode character '\xe5' in position 259: illegal multibyte sequence

解决办法 指定一下编码即可

with open('python01.html','w+',encoding='utf-8') as f:

若保存网页还是乱码 请参考下面的方法 :

response=requests.get('http://www.runoob.com/w3cnote/python-ten-minute-introductory-tutorial.html')
print(response.content.decode('utf-8'))
with open('python01.html','w+',encoding='utf-8') as f:
    f.write(response.content.decode('utf-8'))

关于response.text 和response.content的区别

response.text

类型 : str  
解码类型:根据HTTP头部对响应的编码做出有根据的推测,推测的文本编码
如何修改编码方式:response.encoding="gbk"

response.content

- 类型:bytes
- 解码类型: 没有指定
- 如何修改编码方式:response.content.deocde(“utf-8”)

简单来说

resp.text返回的是Unicode型的数据。
resp.content返回的是bytes型也就是二进制的数据。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值