好的,我想要一个小型数据库。
我对数据库的经验有限,而且没有从网络服务器查询。
我想要检索标题,发布商,作者,描述等信息 我能想到的最简单的方法是通过ISBN查找它们。
之前我遇到过isbndb.com,但访问它的API似乎相当复杂。
我想知道我应该怎么做。
答案 0 :(得分:2)
ISBNdb.com API看起来很简单。以下请求应检索您想要的信息...只需将您的访问密钥替换为“YourKey”,将ISBN替换为“YourISBN”。
https://isbndb.com/api/books.xml?access_key=YourKey&results=texts&index1=isbn&value1=YourISBN
响应是XML,其中包含有关您提交的ISBN的单本书的信息。
答案 1 :(得分: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服务的教程,但我无法找到它。本文可能与此问题有关:
答案 2 :(得分:1)
您可以使用美国国会图书馆的MARC21 XML。
我做了同样的事情,建立了一个数据库来存放我的库。在ISBN中扫描会收集此URL中的数据 http://z3950.loc.gov:7090/voyager?version=1.1&operation=searchRetrieve&query=YOUR_ISBN&maximumRecords=1
然后,响应数据将填入包含所有数据的表单。您不需要帐户,只需要该网址。
响应来自XML(如上所述),您可以使用您想要的任何语言(我的选择恰好是PHP)从那里进行解析。
答案 3 :(得分: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编辑器中的新类模块(Insert-> Class Module)中,并将模块命名为“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”(View-> Immediate Window)。您应该看到响应:
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方法和XMLHttpRequest对象上的msdn页面也很有用(因为我是新用户,我只能发布两个活动链接,你必须替换下面网址中的点):
msgstr msdn microsoft com / en-us / library / ms757828(v = VS.85).aspx msgstr msdn microsoft com / en-us / library / ms535874(v = vs.85).aspx答案 4 :(得分:0)
您使用的是哪种语言?您需要一个程序/脚本来显示一个表单,您可以在其中输入ISBN,然后从isbndb.com获取数据并填充数据库。我已经使用了一些API,但暂时没用过,而且非常简单。