You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Google Books API中正确获取书籍作者名称?

原因分析

  • 谷歌图书API针对同一个ISBN可能返回多个匹配的卷目(volume)条目,你提供的返回结果里共有2条匹配数据:
    • 第一条条目(id为JEP3sgEACAAJ)的volumeInfo字段中未收录作者信息,所以没有authors字段
    • 第二条条目(id为ZRgnzQEACAAJ)的volumeInfo字段中明确包含authors字段,值为['Catherine DeVries'],就是你要找的作者信息
  • 你的代码本身逻辑没有问题,只是没有区分多条返回结果,默认只看第一条数据就会误以为没有作者信息。同时你原有代码里存在两处小笔误:请求逻辑写法错误、json.load是读取文件对象的方法,读取接口响应应该用json.loads或者直接调用响应对象的json()方法。

修复方案

遍历所有返回的items条目,逐一检查volumeInfo下是否存在authors字段,优先取用包含该字段的条目数据即可,示例代码如下:

import requests
import json

def getBooks(isbn):
    url = f"https://www.googleapis.com/books/v1/volumes?q=isbn:{isbn}"
    resp = requests.get(url)
    data = resp.json()
    # 遍历所有匹配条目取带作者信息的结果
    for item in data.get("items", []):
        volume_info = item.get("volumeInfo", {})
        if "authors" in volume_info:
            print("书籍作者:", volume_info["authors"])
            return volume_info

print(getBooks("9780310709626"))

如果想要简化遍历逻辑,也可以在请求URL中添加orderBy=relevance参数,让相关度更高、信息更完整的条目排在返回列表的前几位。

内容的提问来源于stack exchange,提问作者blackCAt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 18:15:01