我正在从 URL 中抓取图像并进行一些操作,然后将它们保存到磁盘。这适用于绝大多数图像,但尽管在浏览器中加载良好,但仍有某些图像 URL 失败。我查看了错误跟踪,但对这里的各种修复都没有运气。以下是提取为失败的示例 URL。
OSError: 无法识别图像文件 <_io.BytesIO object at...>
from PIL import Image
import requests
from io import BytesIO
urlString = "http://lcl3.com/chemStructures1/A-10400.JPG"
response = requests.get(urlString,headers={'User-Agent': 'Mozilla/5.0'},timeout=10)
img = Image.open(BytesIO(response.content)) #check that it is an image; fails here
rgb_im = img.convert('RGB')
basewidth = 450
wpercent = (basewidth/float(rgb_im.size[0]))
if float(rgb_im.size[0]) > 450:
hsize = int((float(rgb_im.size[1])*float(wpercent)))
img = img.resize((basewidth,hsize), Image.ANTIALIAS)
rgb_im.save(image_folder / image_file_name,optimize=True,quality=95)
我认为该文件的格式不同。如需额外参考,该行在以下位置失败:
response = requests.get(urlString,headers={'User-Agent': 'Mozilla/5.0'},timeout=10)
并给出上述痕迹。我敢肯定它可能是一条线,但我把头发扯掉了,所以任何想法都会受到热烈的赞赏!
编辑:
我发现更多链接失败。例如
http://www.excelscientific.com/sealplate.jpg
https://www.bioexpress.com/stibo/web/std.lang.all/52/52/4695252.jpg
我查看了源代码,无法区分任何区别(这些页面上似乎没有任何“内容”只是图像,所以我越来越确信这是图像格式问题。