문제

좋아, 나는 작은 라이브러리를 데이터베이스하고 싶다.

나는 데이터베이스에 대한 경험이 제한적이었고 웹 서버에서 쿼리를 한 사람은 없습니다.

타이틀, 출판사, 아마도 저자, 설명과 같은 정보를 검색하고 싶습니다.

나는 전에 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 페이지도 유용했습니다 (새 사용자이기 때문에 두 개의 활성 링크 만 게시 할 수 있기 때문에 아래 URL의 점을 교체해야합니다).

MSDN Microsoft com/en-US/Library/MS757828 (v = vs.85) .aspx

MSDN Microsoft com/en-US/Library/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 객체의 .RESPONSETXT 속성에 있습니다. 당신이 저를 넘어서는 방법. Access NewsGroup Gurus 중 하나가 Access에서 웹 서비스 소비에 대한 자습서를 게시했지만 찾을 수는 없습니다. 이 기사는 문제와 관련이있을 수 있습니다.

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

ISBNDB.com API는 간단 해 보입니다. 다음 요청은 원하는 정보를 검색해야합니다. "Yourkey"의 액세스 키와 "Yourisbn"의 ISBN을 대체하십시오.

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

응답은 XML로, 제출 한 ISBN의 단일 책에 대한 정보가 포함되어 있습니다.

의회 도서관에서 MARC21 XML을 사용할 수 있습니다.

나는 당신과 똑같은 일을하면서 내 도서관을 수용하기 위해 데이터베이스를 구축했습니다. ISBN에서 스캔하면이 URL에서 데이터를 수집합니다.http://z3950.loc.gov:7090/voyager?version=1.1&operation=searchretrieve&query=your_isbn&maxumrecords=1

그런 다음 응답 데이터는 모든 데이터로 양식을 작성합니다. 계정이 필요하지 않고 해당 URL 만 필요합니다.

응답은 XML로 제공되며 (언급했듯이) 원하는 언어를 사용하여 구문 분석 할 수 있습니다 (내 선택은 PHP입니다).

어떤 언어를 사용하고 있습니까? ISBN을 입력 할 수있는 양식을 제시하려면 프로그램/스크립트가 필요하며 ISBNDB.com에서 데이터를 가져 와서 데이터베이스를 채 웁니다. 나는 API를 조금 사용했지만 얼마 동안은 아니었지만 매우 간단합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top