背景
在使用requests请求网页,并将图片保存到本地时,然后通过openyxl插入到excel,在最后的wb.save()时报错keyError: ‘.webp’,通过筛选找到报错的图片,发现本地有这个图片并且能正常打开,就是不能正常插入到excel中。
解决步骤
1.尝试修改文件类型
之前文件类型保存为png,误以为是png格式的问题,所以将文件后缀改为jpg,并重新尝试插入图片到excel,结果还是报错,手动修改文件类型为jpg后,发现可行,所以就想到了是文件保存方式不对
2.修改文件保存方式:
之前是requests得到文件的content,然后用with open保存图片,他这个大坑是原始网页是一个滑动的图片,虽然能正常保存和打开,但是插入时就会报错,具体原因以后细究。
#之前代码如下
res = requests.get(xx, headers=headers)
if res.status_code == 200:
with open(f'./图片/{hh}.png', 'wb') as f:
f.write(res.content)
改为使用
from io import BytesIO
res = requests.get(xx, headers=headers)
if res.status_code == 200:
img = Image.open(BytesIO(res.content))
img.save(f'./资料文件/图片/{hh}.png')
尝试再次插入到excel中发现成功,大功告成!!!
3.总结
排解bug用了大约3个小时,从开始出现bug,然后从海量数据中找到找到出错的图片所属的品类,然后在品类中先查看该品类的所有图片是否都已经保存到本地,然后根据列表的切片,找到出错的数据,开始排查其与其他网页的区别,初步尝试+GPT解决问题!!!