2

わかりました。小さなライブラリをデータベース化したいのですが。

私はデータベースの経験が限られており、Webサーバーからのクエリの経験はありません。

タイトル、出版社、おそらく著者、説明などの情報を取得したいと思います。これを行うために私が考えることができる最も簡単な方法は、ISBNを介してそれらを検索することです。

以前にisbndb.comに出くわしたことがありますが、それにアクセスするためのAPIはかなり複雑なようです。

どうすればいいのかしら。

4

5 に答える 5

2

米国議会図書館のMARC21XMLを使用できます。

私はあなたと同じことをしました。私のライブラリを格納するデータベースを構築しました。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 に答える
2

ISBNdb.comAPIはシンプルに見えます。次のリクエストでは、必要な情報を取得する必要があります...「YourKey」をアクセスキーに、「YourISBN」をISBNに置き換えてください。

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

応答は、ISBNを送信した1冊の本に関する情報を含むXMLです。

于 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

Webページからの応答は、XMLHTTPオブジェクトの.responseTextプロパティにあります。それをどのように処理するかは私を超えています。Accessニュースグループの達人の1人が、AccessからWebサービスを利用するためのチュートリアルを公開していることは知っていますが、見つけることができません。この記事はこの問題と関係があるかもしれません:

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

于 2010-03-17T20:30:38.823 に答える
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エディターで「MicrosoftXML」への参照を追加する必要があります([ツール]-> [参照])。

通常の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メソッドとXMLHttpRequestオブジェクトのmsdnページも役に立ちました(私は新しいユーザーなので、2つのアクティブなリンクしか投稿できないため、以下の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を入力できるフォームを表示するには、プログラム/スクリプトが必要です。ISBNは、isbndb.comからデータを取得し、データベースにデータを入力します。私はAPIを少し使用しましたが、しばらくは使用していません。それは非常に簡単です。

于 2010-03-16T15:56:40.280 に答える