如何从Google Books API获取缩略图并存储到Python变量
问题核心原因
你的所有尝试都存在同一个基础语法错误:访问Python字典的字符串键时,没有给键名thumbnail加引号,Python会将未加引号的thumbnail识别为变量而非字符串键,触发未定义变量的报错。
对应解决方案
1. 仅将图片URL存入变量
和你之前提取标题、ISBN的逻辑完全一致,给字符串键加引号即可:
my_image_url = parsed_json['items'][0]['volumeInfo']['imageLinks']['thumbnail']
此时my_image_url变量中存储的就是可直接访问的图片链接字符串。
2. 将图片本身加载为Pillow Image对象
Image.open不支持直接读取网络URL,需要配合requests请求资源,修正键名+补充请求头避免被Google Books拦截即可:
from PIL import Image import requests from io import BytesIO # 正确获取图片URL img_url = parsed_json['items'][0]['volumeInfo']['imageLinks']['thumbnail'] # 加UA头模拟浏览器请求,避免API返回403拒绝访问 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" } response = requests.get(img_url, headers=headers) # 校验请求是否成功 response.raise_for_status() # 加载为Image对象 img = Image.open(BytesIO(response.content))
如果需要存储图片原始二进制内容,直接取response.content即可,也可以直接写入本地文件:
# 保存图片到本地示例 with open("book_cover.jpg", "wb") as f: f.write(response.content)
内容的提问来源于stack exchange,提问作者killeme
相关产品推荐
相关产品推荐

