从 google book api 获取缩略图到 python 变量

Posted

技术标签:

【中文标题】从 google book api 获取缩略图到 python 变量【英文标题】:Getting a thumbnail image from google books api into a python variable 【发布时间】:2021-11-03 14:42:09 【问题描述】:

我可以在 js 和 php 中做到这一点,但在 python 中不行。我正在尝试将 google book api 中的缩略图图像提取到 python 变量中。 文本对象很好,例如

newTitle = (parsed_json['items'][0]['volumeInfo']['title'])
isbn10 = (parsed_json['items'][0]['volumeInfo']['industryIdentifiers'][1]['identifier'])
isbn13 = (parsed_json['items'][0]['volumeInfo']['industryIdentifiers'][0]['identifier'])

图像在 api 中提供如下。 (如果你把 http// url 放到浏览器中你会看到图片):

"imageLinks": 
          "smallThumbnail": "http://books.google.com/books/content?id=XUnNDwAAQBAJ&printsec=frontcover&img=1&zoom=5&edge=curl&source=gbs_api",
          "thumbnail": "http://books.google.com/books/content?id=XUnNDwAAQBAJ&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api"

我尝试了简单的方法:

myImage = (parsed_json['items'][0]['volumeInfo']['imageLinks'][thumbnail])  

这是行不通的。 我已经安装了枕头来提供图像管理:

from PIL import Image
img = Image.open("parsed_json['items'][0]['volumeInfo']['imageLinks'][thumbnail]") or 
img = Image.open(parsed_json['items'][0]['volumeInfo']['imageLinks'][thumbnail])

这是行不通的。我尝试过更复杂的安排:

from PIL import Image
import requests
from io import BytesIO

response = requests.get(parsed_json['items'][0]['volumeInfo']['imageLinks'][thumbnail])
img = Image.open(BytesIO(response.content)) 

但似乎没有任何效果。我已经尝试了这些尝试的许多其他变体。我也尝试加载指向缩略图的文本以尝试另一条路线,但未成功。我相信“['items'][0]['volumeInfo']['imageLinks'][thumbnail]”是正确的,尽管我测试变量是否正确加载的唯一方法是保存它或者该行是否正确的代码不起作用。

【问题讨论】:

【参考方案1】:

我在下载和打开图像时没有遇到问题。 我使用了以下代码

import requests
from PIL import Image


image_url = "https://books.google.com/books/content?id=XUnNDwAAQBAJ&printsec=frontcover&img=1&zoom=5&edge=curl&source=gbs_api"
  
r = requests.get(image_url)
  
with open("demo_image",'wb') as f:
    f.write(r.content)

img = Image.open("demo_image")

【讨论】:

感谢您的回答。这也对我有用,但是如果我用 json 链接替换直接链接,例如“image_url = (parsed_json['items'][0]['volumeInfo']['imageLinks'][thumbnail])”,代码就会停止那里。如果出现问题,我将尝试 json 语法的不同变体。如果有人知道如何从解析的 json 中获取该 url - 我将非常感激! 它现在使用:“image_url = (parsed_json['items'][0]['volumeInfo']['imageLinks']['thumbnail'])”。我忘记了“缩略图”上的逗号。很抱歉浪费时间。感谢您的回复。希望有人可能会发现请求和回答很有用

以上是关于从 google book api 获取缩略图到 python 变量的主要内容,如果未能解决你的问题,请参考以下文章

nginx实时生成缩略图到硬盘上

Bootstrap 3中水平对齐缩略图到中心

nginx实时生成缩略图到硬盘上

在 Android 中使用 Google Books API

Firebase Cloud Function -> Google Books API 的 403 状态

从 Firebase Cloud Function 调用 Google Books API 时出现 HttpsError