2

好的,我想建立一个小型图书馆。

我只有有限的数据库经验,没有从网络服务器查询。

我将要检索诸如标题、出版商、也许是作者、描述之类的信息,我能想到的最简单的方法是通过 ISBN 查找它们。

我之前遇到过 isbndb.com,但访问它的 API 似乎相当复杂。

我想知道我应该怎么做。

4

5 回答 5

2

ISBNdb.com API 看起来很简单。以下请求应该检索您想要的信息......只需将您的访问密钥替换为“YourKey”,并将 ISBN 替换为“YourISBN”。

https://isbndb.com/api/books.xml?access_key=YourKey&results=texts&index1=isbn&value1=YourISBN 

响应是 XML,其中包含有关您提交其 ISBN 的单本书的信息。

于 2010-03-16T18:34:54.127 回答
2

这是一个不完整的答案,但它应该让你开始(我没有使用 XML 数据作为返回)。

此代码具有基础知识:

  Dim oHttp As Object

  Set oHttp = CreateObject("Microsoft.XMLHTTP")
  oHttp.Open "GET", "https://isbndb.com/api/books.xml?access_key=YourKey&results=texts&index1=isbn&value1=YourISBN", False
  oHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
  oHttp.Send vbNullString
  Debug.Print oHttp.responseText

来自网页的响应位于 XMLHTTP 对象的 .responseText 属性中。你如何处理这超出了我的范围。我知道一位 Access 新闻组专家发布了一篇关于从 Access 使用 Web 服务的教程,但我找不到它。这篇文章可能与这个问题有关:

http://support.microsoft.com/kb/285329/en-us

于 2010-03-17T20:30:38.823 回答
2

您可以使用美国国会图书馆的 MARC21 XML。

我和你做了同样的事情,建立一个数据库来存放我的图书馆。在 ISBN 中扫描会从这个 URL http://z3950.loc.gov:7090/voyager?version=1.1&operation=searchRetrieve&query=YOUR_ISBN&maximumRecords=1收集数据

然后,响应数据会填写包含所有数据的表单。您不需要帐户,只需要那个 URL。

响应来自 XML(如前所述),您可以使用任何您想要的语言从那里解析(我的选择恰好是 PHP)。

于 2010-12-03T21:24:39.810 回答
1

我最近不得不这样做,因为我们为保险目的索引了我们的图书馆。下面是我一起破解的 vba 类的代码:

Option Compare Database
    dim BookTitle As String
    dim BookTitleLong As String
    dim BookAuthorsText As String
    dim BookPublisherText As String
    dim BookSummary As String
    dim BookNotes As String
    dim accessKey As String

Private Sub Class_Initialize()
    'Your isbnDB access key'
    accessKey = "PUT ACCESSKEY HERE"
End Sub    
Property Get Title() As String
    Title = BookTitle
End Property    
Property Get TitleLong() As String
    TitleLong = BookTitleLong
End Property    
Property Get AuthorsText() As String
    AuthorsText = BookAuthorsText
End Property
Property Get PublisherText() As String
    PublisherText = BookPublisherText
End Property
Property Get Summary() As String
    Summary = BookSummary
End Property
Property Get Notes() As String
    Notes = BookNotes
End Property

Public Function Lookup(isbn As String) As Boolean
    Lookup = False
    Dim xmlhttp
    Set xmlhttp = CreateObject("MSXML2.xmlhttp")
    xmlhttp.Open "GET", "https://isbndb.com/api/books.xml?access_key=" & accessKey & "&results=texts&index1=isbn&value1=" & isbn, False
    xmlhttp.send
    'Debug.Print "Response: " & xmlhttp.responseXML.XML'
    Dim xmldoc
    Set xmldoc = CreateObject("Microsoft.XMLDOM")
    xmldoc.async = False
    'Note: the ResponseXml property parses the server's response, responsetext doesn't
    xmldoc.loadXML (xmlhttp.responseXML.XML)
    If (xmldoc.selectSingleNode("//BookList").getAttribute("total_results") = 0) Then
        MsgBox "Invalid ISBN or not in database"
        Exit Function
    End If
    If (xmldoc.selectSingleNode("//BookList").getAttribute("total_results") > 1) Then
        MsgBox "Caution, got more than one result!"
        Exit Function
    End If
    BookTitle = xmldoc.selectSingleNode("//BookData/Title").Text
    BookTitleLong = xmldoc.selectSingleNode("//BookData/TitleLong").Text
    BookAuthorsText = xmldoc.selectSingleNode("//BookData/AuthorsText").Text
    BookPublisherText = xmldoc.selectSingleNode("//BookData/PublisherText").Text
    BookNotes = xmldoc.selectSingleNode("//BookData/Notes").Text
    BookSummary = xmldoc.selectSingleNode("//BookData/Summary").Text
    Lookup = True
End Function

获取 API 密钥,将上述代码(使用您的密钥)粘贴到 VBA 编辑器中的新类模块(插入-> 类模块)中,并将模块命名为“isbn”。您还需要在 VBA 编辑器中添加对“Microsoft XML”的引用(工具->参考)

您可以在普通的 vba 模块中使用下面的代码片段测试它是否有效:

Public Function testlookup()
    Dim book
    Set book = New isbn
    book.Lookup ("0007102968")
    Debug.Print book.Title
    Debug.Print book.PublisherText
End Function

然后只需在即时窗口(查看->即时窗口)中键入“testlookup”。您应该看到以下响应:

The Times book of quotations
[Glasgow] : Times Books : 2000.

isbnDB 可以返回比我在上述类中收集的数据更多的数据,请在此处阅读 API 参考:http: //isbndb.com/docs/api/并根据您的需要定制类。

我发现这篇文章非常有助于解释如何在访问中使用 xmlhttp: http ://www.15seconds.com/issue/991125.htm

XML DOM Methods 和 XMLHttpRequest Object 上的 msdn 页面也很有用(因为我是新用户,我只能发布两个活动链接,您必须替换以下 url 中的点):

msdn microsoft com/en-us/library/ms757828(v=VS.85).aspx

msdn microsoft com/en-us/library/ms535874(v=vs.85).aspx

于 2011-03-30T21:04:52.520 回答
0

您使用什么语言?您需要一个程序/脚本来呈现一个表单,您可以在其中输入 ISBN,然后从 isbndb.com 获取数据并填充数据库。我已经使用了一些 API,但已经有一段时间没有使用了,而且它非常简单。

于 2010-03-16T15:56:40.280 回答