查找一本书的版本

Posted

技术标签:

【中文标题】查找一本书的版本【英文标题】:Looking up Editions of a Book 【发布时间】:2011-04-08 07:46:53 【问题描述】:

有没有一种方法可以使用亚马逊产品广告 API 根据其 ISBN 来查找一本书的各个版本?

而且,更一般地说,在图书上查找版本元数据的各种选择是什么?只有一个我知道的肯定是来自 worldcat 的 xISBN api

在我的网站上,当人们搜索书籍时,我们有一个“更多版本”按钮。所以我会进行大量查询(并缓存它们)。

【问题讨论】:

【参考方案1】:

您可以使用 OCLC 的 xISBN API - 给它一个 ISBN,它会为您提供一组相同“工作”的所有 ISBN - 其他版本、翻译等。它会给您这样的东西:

<?xml version="1.0" encoding="UTF-8"?>
<rsp xmlns="http://worldcat.org/xid/isbn/" stat="ok">
    <isbn form="BA" year="2004" lang="eng" ed="2nd ed.">0596002815</isbn>
    <isbn form="BA DA" year="1999" lang="eng">1565928938</isbn>
    <isbn form="BA" year="1999" lang="eng" ed="1st ed.">1565924649</isbn>
</rsp>

不幸的是,它不是免费的。 Here is the pricing.

【讨论】:

我一直在使用那个.. 我想知道它是否可以通过亚马逊以及是否有其他选择 hm.. 有 LibraryThing ThingISBN 但它仅可用于非商业用途:librarything.com/blogs/thingology/2006/06/introducing-thingisbn【参考方案2】:

看看https://sourceforge.net/projects/isbntools/files/latest/download。命令isbn editions ISBN 会给你你想要的......

如果您是开发人员,您有https://pypi.python.org/pypi/isbntools。

【讨论】:

这是一个非常令人兴奋的项目。感谢发帖【参考方案3】:

这个问题很老,但为了完整起见,我要补充一点,亚马逊产品广告 API 确实提供了一种查找书籍其他版本(和 ISBN 编号)的方法,但这涉及两个 ItemLookup 查询:

获取父商品 ASIN 的第一个查询,亚马逊称之为 Authority Non Buyable;这是一个没有产品页面的虚拟产品,只是一个儿童产品的容器。 第二个查询列出此父项的子项。

两个查询都必须包含以下参数:

ResponseGroup=RelatedItems,ItemAttributes RelationshipType=AuthorityTitle

第一个带有 ISBN 编号的查询如下所示:

...&amp;IdType=ISBN&amp;ItemId=9780345803481

<RelatedItems>
    <Relationship>Parents</Relationship>
    <RelationshipType>AuthorityTitle</RelationshipType>
    <RelatedItemCount>1</RelatedItemCount>
    <RelatedItemPageCount>1</RelatedItemPageCount>
    <RelatedItemPage>1</RelatedItemPage>
    <RelatedItem>
        <Item>
            <ASIN>B0058NLWEC</ASIN>
            ...
        </Item>
    </RelatedItem>
</RelatedItems>

使用第一个查询返回的父 ASIN B0058NLWEC 执行第二个查询:

...&amp;IdType=ASIN&amp;ItemId=B0058NLWEC

<RelatedItems>
    <Relationship>Children</Relationship>
    <RelationshipType>AuthorityTitle</RelationshipType>
    <RelatedItemCount>42</RelatedItemCount>
    <RelatedItemPageCount>5</RelatedItemPageCount>
    <RelatedItemPage>1</RelatedItemPage>
    <RelatedItem>
        <Item>
            <ASIN>1445026570</ASIN>
            <ItemAttributes>
                <EAN>9781445026572</EAN>
                <ISBN>1445026570</ISBN>
                ...
            </ItemAttributes>
            ...
        </Item>
    </RelatedItem>
    <RelatedItem>
        <Item>
            <ASIN>1471305015</ASIN>
            <ItemAttributes>
                <EAN>9781471305016</EAN>
                <ISBN>1471305015</ISBN>
                ...
            </ItemAttributes>
            ...
        </Item>
    </RelatedItem>
    ...
</RelatedItems>

这列出了亚马逊已知的这本书的所有版本:精装本、平装本、Kindle、有声读物……

【讨论】:

【参考方案4】:

ISBN DB 提供a remote access API,它将返回各种格式为 XML 的元数据。通过浏览他们网站上的条目,一些 ISBN 条目也包含版本信息。

查看此 API 示例响应:

<?xml version="1.0" encoding="UTF-8"?>
<ISBNdb server_time="2005-07-29T03:02:22">
 <BookList total_results="1">
  <BookData book_id="paul_laurence_dunbar" isbn="0766013502">
   <Title>Paul Laurence Dunbar</Title>
   <TitleLong>Paul Laurence Dunbar: portrait of a poet</TitleLong>
   <AuthorsText>Catherine Reef</AuthorsText>
   <PublisherText publisher_id="enslow_publishers">
    Berkeley Heights, NJ: Enslow Publishers, c2000.
   </PublisherText>
   <Summary>
    A biography of the poet who faced racism and devoted himself
    to depicting the black experience in America.
   </Summary>
   <Notes>
    "Works by Paul Laurence Dunbar": p. 113-114.
    Includes bibliographical references (p. 124) and index.
   </Notes>
   <UrlsText></UrlsText>
   <AwardsText></AwardsText>
   <Prices>
    <Price store_id="alibris" is_in_stock="1" is_new="0"
           check_time="2005-07-29T01:18:18" price="14.92"/>
    <Price store_id="amazon" is_in_stock="1" is_new="1"
           check_time="2005-07-29T01:18:20" price="26.60" />
   </Prices>
  </BookData>
 </BookList>
</ISBNdb>

另外,这里是specific documentation 'books collection' 响应 XML 中的属性。

【讨论】:

是的,但 API 提供了您自己解决此问题所需的一切。通过简要阅读文档,数据被组织成几种不同类型的集合。您可以在图书收藏中搜索标题和作者,从而不太可能出现误报。当然,除非作者已经写了多本关于这个主题的书......但即便如此,将它们剔除应该是一项微不足道的任务。 /api/books.xml?access_key=Z&index1=combined&value1=book_title+by+author_name【参考方案5】:

1) 标题相同的搜索 2) 遍历响应列表(对于大多数书籍来说,这应该是 5-10 个结果,具有通用标题的书籍,比如“Python 编程”会导致很多结果,因此可能无法解决) 3)查看ISBN号+发布日期的差异

我不记得有相同的直接 api。

【讨论】:

不幸的是,标题搜索给出了来自不同版本组的书籍。正在寻找直接 API。

以上是关于查找一本书的版本的主要内容,如果未能解决你的问题,请参考以下文章

7-1 查找书籍

[PTA]习题9-4 查找书籍

算法算法 二分查找 二分查找 查找多个相同的值

[PTA]实验9-5 查找书籍

Webkit 列查找可见文本的范围

封装设置值进行查找