如何从ISBN号中获取书名?

35

我计划创建一个小型网站来管理我的个人书籍收藏。为了自动化这个过程,我希望实现以下功能:

网站会要求我输入书籍的ISBN编号,并自动获取书名并将其添加到我的数据库中。

虽然我主要希望使用php来完成这个功能,但我也有一些Java实现的想法。我认为尽可能做到语言不限制会更有帮助。


链接(其他有用的答案在那里):https://dev59.com/2HVD5IYBdhLWcg3wDHDm - Basj
10个回答

44

这是LibraryThing的创始人。我们在这里没有什么可提供的,所以我希望我的评论不会显得自私。

首先,关于亚马逊、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图书数据API,然后是OpenLibrary API。对于非英语书籍,还有其他选择,比如俄罗斯书籍的Ozone。

如果你关心最高质量的数据,或者你有任何1970年左右出版的书籍,你需要研究来自图书馆的数据,这些数据可以通过Z39.50协议获得,通常以MARC格式提供,或者使用SRU/SRW协议,在Dublin Core中有一些图书馆。对于现代程序员来说,MARC格式可能很奇怪。但是,一旦你理解了它,它也是更好的数据,并包括有用的字段,如LCCN、DDC、LCC和LCSH。

LibraryThing运行在一个自制的Python库上,查询了大约680个图书馆,并将多种MARC转换为与亚马逊兼容的XML,同时还包括额外的内容。我们目前不愿意发布代码,但可能很快发布服务。


我已经成功访问了该链接:http://www.librarything.com/services/rest/1.1/?method=librarything.ck.getwork&isbn=9783836526296&apikey=[API_KEY] - tobek

17

这里所有的链接都是404错误。此外,ideone链接没有显示任何内容。 - Funk Forty Niner
要么答案被删除了,要么更新那些链接的当前信息。 - Funk Forty Niner

14

请查看ISBN DB API,它是一个简单的基于REST的web服务。虽然我没有亲自尝试过,但我的一个朋友已经成功地使用它。

这将给您书名、作者信息,以及根据书籍的不同,您可以使用的其他详细信息的数量。


1
链接参考不再可用。 - Jithin Jose
书籍封面质量低下。 - Konstantin Konopko

12

尝试https://gumroad.com/l/RKxO

我大约3周前购买了这个数据库,用于我正在制作的书目引用应用程序。我没有遇到任何质量问题,而且我扫描的几乎每本书都可以找到。唯一的问题是他们提供的文件是CSV格式的,我必须将2000万行数据转换,这花了我将近一个小时的时间!此外,每月更新不是增量更新,而是整个数据库的更新,这对我来说可以接受,但对其他人可能需要一些工作。


7

我没有尝试过,但看一下isbndb

API Description: Introduction

ISBNdb.com's remote access application programming interface (API) is designed to allow other websites and standalone applications use the vast collection of data collected by ISBNdb.com since 2003. As of this writing, in July 2005, the data includes nearly 1,800,000 books; almost 3,000,000 million library records; close to a million subjects; hundreds of thousands of author and publisher records parsed out of library data; more than 10,000,000 records of actual and historic prices.

Some ideas of how the API can be used include:

- 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

Using the API you can look up information by keywords, by ISBN, by authors or publishers, etc. In most situations the API is fast enough to be used in interactive applications.

The data is heavily cross-linked -- starting at a book you can retrieve information about its authors, then other books of these authors, then their publishers, etc.

The API is primarily intended for use by programmers. The interface strives to be platform and programming language independent by employing open standard protocols and message formats.


2
尽管其他答案都是正确的,但这个答案更详细地解释了这个过程。它使用了谷歌图书 API。

https://giribhatnagar.wordpress.com/2015/07/12/search-for-books-by-their-isbn/

你需要做的只有:
1. 创建一个适当的 HTTP 请求
2. 发送并接收包含书籍详细信息的 JSON 对象
3. 从接收到的信息中提取书名
你会得到一个 JSON 格式的响应。上述网站提供的代码是用 NODE.js 编写的,但我相信在 PHP(或任何其他语言)中复现这个代码不会很难。

1

要获取给定ISBN号码的数据,您需要与一些在线服务进行交互,例如isbndb。 最好的文献信息来源之一是亚马逊网络服务。 它为您提供所有文献信息+书籍封面。


1

0

0

作为isbndb的替代方案(看起来是完美的答案),我有印象可以将ISBN传递到亚马逊产品URL中,直接进入该书的亚马逊页面。虽然这不会以编程方式返回图书标题,但如果您想从数据库链接到亚马逊用户评论,则可能是一个有用的额外功能。

然而,此链接似乎表明我错了。实际上,亚马逊使用的是ASIN号码,尽管它曾经与10位数字ISBN号码相同,但现在不再是唯一的种类-ISBN现在有13位数字(尽管旧的10位数字类型有直接转换)。

但更有用的是,同样的链接确实谈到了Amazon API,它可以将ISBN转换为ASIN,并且很可能还可以让您查找标题和其他信息。它主要面向亚马逊联盟会员,但毫无疑问,如果出于某种原因isbndb无法胜任工作,它也可以胜任。

编辑:上面的Tim Spalding指出了一些关于ISBN的实际事实-我稍微过于悲观地认为ASIN不再对应。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接