如何通过 ISBN 从国会图书馆以 XML/JSON 格式检索图书信息
Posted
技术标签:
【中文标题】如何通过 ISBN 从国会图书馆以 XML/JSON 格式检索图书信息【英文标题】:How to retrieve book's information in XML/JSON from library of congress by ISBN 【发布时间】:2012-11-19 23:32:29 【问题描述】:国会图书馆有一个网站可以按 ISBN 搜索书籍。检索图书信息的一种简单方法是使用如下 URL:
http://lccn.loc.gov/2009019559/mods
它返回一个可以轻松解析的 XML 结构。该 URL 需要一个唯一的 LCCN 编号,格式如下:
http://lccn.loc.gov/[lccn]/mods
我有一批以条形码编码的 ISBN 图书。如何检索 ISBN/将其转换为 LCCN 以检索图书的 XML 数据?
【问题讨论】:
一定要按LCCN号码查吗?如果您有这些站点/API,您可以通过 ISBN 号进行查找。见webhole.net/2009/08/25/get-book-info-from-isbn 我之前尝试过 isbndb,但对于我的情况,它不如 loc 完整。我仍然更喜欢从 loc 目录中检索数据。 【参考方案1】:您可以使用美国国会图书馆的 SRU 目录。查询看起来像这样:
lx2.loc.gov:210/lcdb?version=1.1&operation=searchRetrieve&query=bath.isbn=[ISBN]&maximumRecords=1&recordSchema=mods
将 [ISBN] 替换为您要查找的 ISBN
在该响应中是一个 LCCN 元素。但是,目录已经返回了 MODS,所以可能根本不需要做任何事情。
【讨论】:
@Menasheh 是的,也许 它“似乎不适用于许多 ISBN”的原因是因为 LOC 可能没有与您的号码完全匹配的书。一本书的相同标题可能有许多不同的 ISBN。例如,一本用于精装本、一本用于平装本、一本用于图书的更新版本等。当您的搜索失败时,请尝试按标题而不是 isbn。【参考方案2】:您可以使用 Google Books API,例如:https://www.googleapis.com/books/v1/volumes?q=LCCN2001051058
答案为 JSON 格式。它包括 ISBN-10 和 ISBN-13 标识符。您将不得不使用您最喜欢的编程语言在 Pharo Smalltalk 中使用 PetitJson 解析器和 Zinc 中使用 HTTPS 支持来批处理请求:
| parser lccnCollection |
parser := PPParserResource current parserAt: PPJsonParser.
lccnCollection := #('2001051058' '2001051058').
lccnCollection do: [: lccnNumber |
| json jsonObject |
json := (Url absoluteFromText: 'https://www.googleapis.com/books/v1/volumes?q=LCCN' , lccnNumber) retrieveContents contents.
jsonObject := parser parse: json.
" ... retrieve ISSN from jsonObject, etc ... "].
请注意,您可能需要 API 密钥才能向 Google 发出批量请求。
【讨论】:
谢谢。也许我没有在这个问题上说清楚。我正在寻找像 LOC 的 mods URL 这样的直接解决方案,它允许我将 ISBN 作为参数传递。经过反复试验,我认为解决方案是使用 LOC 的 z3950 Web 服务。 @ChauCheeYang,如果您有时间,您能否发布 http 请求或指向详细说明您用于此任务的方法的文档的链接?我和你在同一条船上......以上是关于如何通过 ISBN 从国会图书馆以 XML/JSON 格式检索图书信息的主要内容,如果未能解决你的问题,请参考以下文章