如何从 ISBN 号中获取书名? [关闭]
Posted
技术标签:
【中文标题】如何从 ISBN 号中获取书名? [关闭]【英文标题】:How to fetch a Book Title from an ISBN number? [closed] 【发布时间】:2010-09-07 16:11:40 【问题描述】:我正计划为我的个人藏书创建一个小型网站。为了稍微自动化这个过程,我想创建以下功能:
网站会询问我图书的 ISBN 号,然后会自动获取书名并将其添加到我的数据库中。
虽然我主要对在php中做这件事感兴趣,但我对此也有一些Java实现的想法。我相信,如果答案尽可能与语言无关,它也会有所帮助。
【问题讨论】:
已链接(其他有用的答案):***.com/questions/106963/… 【参考方案1】:这是 LibraryThing 的创始人。我们这里没有什么可提供的,所以我希望我的 cmets 不会显得自私。
首先,关于亚马逊、ASIN 和 ISBN 号的评论在很多方面都是错误的。几乎在每本书都有 ISBN 的情况下,ASIN 和 ISBN 都是相同的。 ISBN 现在不是 13 位数字。相反,ISBN 可以是 10 或 13。十位 ISBN 可以表示为以 978 开头的 13 位,这意味着当前存在的每个 ISBN 都有 10 位和 13 位的形式。有各种库可用于在 ISBN10 和 ISBN13 之间进行转换。基本上就是在前面加978,最后重新计算校验和数字。
发明 ISBN13 是因为出版商的 ISBN 用完了。在不久的将来,当基于 979 的 ISBN13 开始使用时,它们将不会有 ISBN10 等效项。据我所知,没有基于 979 的 ISBN 的已出版书籍,但它们即将推出。无论如何,总而言之,亚马逊对所有 978 个 ISBN10 都使用 ISBN10 表格。无论如何,无论亚马逊使用十位数还是十三位数的 ASIN,您都可以搜索亚马逊。
就个人而言,我不会将 ISBN DB 放在您的列表顶部。 ISBN DB 从多个来源挖掘,但不如亚马逊或谷歌全面。相反,我会研究亚马逊——包括各种国际亚马逊——然后是新的 Google Book Data API,然后是 OpenLibrary API。对于非英语书籍,还有其他选择,例如用于俄语书籍的 Ozone。
如果您关心最高质量的数据,或者如果您有任何大约在 1970 年之前出版的书籍,您将需要查看图书馆中的数据,这些数据通过 Z39.50 协议提供,通常采用 MARC 格式,或者带有都柏林核心中的几个库,使用 SRU/SRW 协议。对于现代程序员来说,MARC 格式是非常奇怪的东西。但是,一旦你得到它,它也是更好的数据,并且包括有用的字段,如 LCCN、DDC、LCC 和 LCSH。
LibraryThing 运行一个自制的 Python 库,该库查询大约 680 个库并将 MARC 的多种风格转换为与 Amazon 兼容的 XML,以及附加功能。我们目前不愿意发布代码,但可能很快就会发布服务。
【讨论】:
LiraryThing API 不再工作了吗? librarything.com/services/rest/1.1/…api_key 我能够让它工作:http://www.librarything.com/services/rest/1.1/?method=librarything.ck.getwork&isbn=9783836526296&apikey=[API_KEY]
【参考方案2】:
Google 拥有自己的API for Google Books,让您可以轻松查询 Google Book 数据库。该协议是基于 JSON 的,您可以查看有关它的技术信息here。
您基本上只需要请求以下网址:
https://www.googleapis.com/books/v1/volumes?q=isbn:YOUR_ISBN_HERE
这将以 JSON 格式返回有关图书的信息。
【讨论】:
所有这些链接都是 404 的。另外,ideone 链接什么也没显示。 要么删除答案,要么用当前信息更新这些链接。【参考方案3】:查看ISBN DB API。这是一个简单的基于 REST 的 Web 服务。自己没试过,朋友有成功的经验。
它会为您提供书名、作者信息,以及您可以使用的其他详细信息的数量,具体取决于书名。
【讨论】:
链接参考不再可用 书籍封面质量低【参考方案4】:试试https://gumroad.com/l/RKxO
我大约 3 周前购买了这个数据库,用于我正在制作的图书引用应用程序。我没有任何质量问题,几乎所有我扫描的书都被发现了。唯一的问题是他们以 CSV 格式提供文件,我不得不转换 2000 万行,这花了我将近一个小时!此外,每月更新不是增量,而是发送整个数据库,这对我有用,但可能对其他人有用。
【讨论】:
【参考方案5】:没试过,不过看看isbndb
API 说明:简介
ISBNdb.com 的远程访问应用程序编程接口 (API) 旨在允许其他网站和独立应用程序使用 ISBNdb.com 自 2003 年以来收集的大量数据。截至 2005 年 7 月撰写本文时,这些数据包括近1,800,000 本书;近 30 亿个图书馆记录;接近一百万个科目;从图书馆数据中解析出的数十万作者和出版商记录;超过 10,000,000 条实际和历史价格记录。
有关如何使用 API 的一些想法包括:
- Cataloguing home book collections - Building and verifying bookstores' inventories - Empowering forums and online communities with more useful book references - Automated cross-merchant price lookups over messaging devices or phones
使用 API,您可以按关键字、ISBN、作者或出版商等查找信息。在大多数情况下,API 的速度足以在交互式应用程序中使用。
数据是高度交叉链接的——从一本书开始,您可以检索有关其作者的信息,然后是这些作者的其他书籍,然后是他们的出版商等。
API 主要供程序员使用。该接口通过采用开放标准协议和消息格式来努力实现平台和编程语言的独立性。
【讨论】:
【参考方案6】:虽然其他答案是正确的,但这个答案更详细地解释了这个过程。这个使用 GOOGLE BOOKS API。
https://giribhatnagar.wordpress.com/2015/07/12/search-for-books-by-their-isbn/
你需要做的就是 1.创建适当的 HTTP 请求 2.发送并接收包含图书详细信息的 JSON 对象 3.提取收到的信息中的标题 您得到的响应是 JSON。上面网站上给出的代码是针对 NODE.js 的,但我相信用 PHP(或任何其他语言)复制它并不难。
【讨论】:
【参考方案7】:要获取给定 ISBN 编号的数据,您需要与一些在线服务(例如 isbndb)进行交互。 书目信息的最佳来源之一是亚马逊网络服务。它为您提供所有书目信息 + 书籍封面。
【讨论】:
【参考方案8】:您可能想查看LibraryThing,它有一个API 和do what you want,它们处理诸如为单个“作品”的不同版本映射多个ISBN 之类的事情。
【讨论】:
【参考方案9】:作为 isbndb 的替代方案(这似乎是完美的答案),我的印象是,您可以将 ISBN 传递到亚马逊产品 URL 中,以直接进入该书的亚马逊页面。虽然这不会以编程方式返回书名,但如果您想从数据库链接到亚马逊用户评论,它可能是一个有用的额外功能。
但是,this link 似乎表明我错了。实际上亚马逊使用的是 ASIN 编号,虽然这曾经与 10 位 ISBN 编号相同,但它们不再是唯一的类型 - ISBN 现在有 13 位(尽管从旧的 10 位类型直接转换)。
但更有用的是,同一个链接确实谈到了可以从 ISBN 转换为 ASIN 的亚马逊 API,并且还可能让您查找标题和其他信息。它主要针对亚马逊的附属公司,但毫无疑问,如果由于某种原因 isbndb 没有,它可以完成这项工作。
编辑:上面的 Tim Spalding 指出了一些关于 ISBN 的实际事实 - 我有点过于悲观地假设 ASIN 不再对应。
【讨论】:
【参考方案10】:你也可以试试这个数据库:http://www.usabledatabases.com/database/books-isbn-covers/
它的书籍/ISBN 比您目前在网络上可以找到的大多数网络服务都多。但这对于您的小型网站来说可能有点过头了。
【讨论】:
以上是关于如何从 ISBN 号中获取书名? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Google Book API 从 ISBN 获取书籍封面?
pyspark randomForest 特征重要性:如何从列号中获取列名