UnicodeDecodeError: 'gbk' codec can't decode byte 0xd0 in position 23475: illegal multibyte sequence

Python爬虫错误:UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0xd0 in position 23475: illegal multibyte sequence

举一个利用Python网络爬虫爬取电影天堂网站电影数据发生解码错误的例子:

报错的原代码如下:

#爬取电影天堂电影信息

from lxml import etree
import requests

url = "https://www.ygdy8.net/html/gndy/dyzz/list_23_1.html"
headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:74.0) Gecko/20100101 Firefox/74.0'
}
response = requests.get(url,headers=headers)
print(response.content.decode(encoding='gbk'))

报错信息为:

在这里插入图片描述
查看该网页源代码,发现网页确实是以gbk的编码方式,但是解码还是报错了。个人觉得是因为该网站的编写不规范,而导致resquest库去解码的时候容易产生一些错误或者警告⚠。将光标放到decode函数上,按ctrl+B打开decode函数的代码(我用的PyCharm):

在这里插入图片描述
注释内容大致意思为:该函数提供用于处理解码错误的错误处理方案,其中默认值为“严格”,这意味着解码错误会引起UnicodeDecodeError。 其他可以设定的值是“忽略”和“替换”,可以有效避免错误UnicodeDecodeError。我们选择参数“忽略”,因此可在decode函数后面添加参数:errors=‘ignore’

修改后的代码:


#爬取电影天堂电影信息

from lxml import etree
import requests

url = "https://www.ygdy8.net/html/gndy/dyzz/list_23_1.html"
headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:74.0) Gecko/20100101 Firefox/74.0'
}
response = requests.get(url,headers=headers)
print(response.content.decode(encoding='gbk', errors='ignore'))

这样我们就可以正确爬取该网站的信息了:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值