ISBN - データベースに記入する> bookdata検索
-
20-09-2019 - |
質問
[OK]を、私は小さな図書館のデータベースに欠けてます。
私は限られたデータベースと経験、およびWebサーバからの照会でどれだけ持っていた。
私は、タイトル、出版社、多分作者、説明などの情報を取得するつもりです 私はこれをdooingの考えることができる最も簡単な方法は、ISBNを経由してそれらを探しています。
私は前にisbndb.com渡って来ているが、それをアクセスするためのAPIは、かなり複雑なようです。
私は私がこれをやって行くべきか迷っています。
解決
私は最近、我々は保険の目的のために私たちのライブラリをインデックス化と正確にこれをしなければなりませんでした。以下は、私が一緒にハッキング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メソッドとのXMLHttpRequestオブジェクト上のMSDNのページでは、(私は2つだけのアクティブなリンクを投稿することができ、新たなユーザーだから、あなたは以下のURLでドットを交換する必要があります)にも有用であった。
MSDNのMicrosoft COM / EN-US /ライブラリ/ ms757828(V = VS.85).aspxの
MSDNのMicrosoft COM / EN-US /ライブラリ/ ms535874(V = VS.85).aspxの
他のヒント
(私はリターンとして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サービスを消費するのチュートリアルを公開していることを知っているが、私はそれを見つけることができません。この記事では問題とは何かを持っているかもしれません。
ISBNdb.comのAPIはシンプルに見えます。必要な情報を取得する必要があり、次の要求が...ちょうど「YourKey」と「YourISBN」のISBNについては、アクセスキーを置き換えます。
https://isbndb.com/api/books.xml?access_key=YourKey&results=texts&index1=isbn&value1=YourISBN
応答は、ISBNあなたが提出した、単一の書籍についての情報を含むXMLです。
あなたは、米国議会図書館からMARC21 XMLを使用することができます。
私は自分のライブラリーを収容するためのデータベースを構築し、あなたと同じことをしました。 ISBNでのスキャンは、このURLからデータを収集します http://z3950.loc.gov:7090/voyager?バージョン= 1.1&オペレーション= searchRetrieve&クエリ= YOUR_ISBN&maximumRecords = 1 の
の応答データは、全てのデータを使用してフォームに記入します。あなたはただそのURL、アカウントは必要ありません。
応答は、(前述のように)XMLに来て、あなたは(私の選択は、PHPであることを起こる)好きな言語使用して、そこから解析することができます。
どのような言語を使用していますか?あなたはその後、isbndb.comからデータを取得し、データベースに投入うISBNを入力することができますフォームを提示するプログラム/スクリプトを必要としています。私はAPI少し使用ではなく、いくつかの時間のために、それは非常に簡単だしました。