我正在做一些操作,然后从URL抓取图像,然后将其保存到磁盘。这适用于大量大多数图像,但是某些图像URL尽管在浏览器中加载正常,但仍会失败。我查找了错误跟踪,但是这里的各种修补程序都没有运气。以下是提取为失败的URL的示例。
OSError:无法识别图像文件<...的io.BytesIO对象...>
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)
我认为文件的格式不同。为了获得更多参考,该行在以下位置失败:
响应= request.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
我查看了源代码,无法区分任何差异(这些页面上的图像似乎没有任何“内容”,所以我更加确定这是图像格式问题。