【VBA】国会図書館のWebサイトから、書籍データを取得する

国会図書館はAPIを提供しています!

APIを使用することで、
 ・国会図書館のWebサイトから
 ・書籍データを取得
できます!

この記事ではAPI「opensearch」
使用方法を記載します!

PR

API「opensearch」とは

国会図書館が提供しているAPIの1つです。
API「opensearch」を使用することで、国会図書館のWebサイトから書籍データを取得できます。
詳細は公式サイトをご確認ください。

PR

VBAコード

ここでは例として、データの取得条件として以下を指定します。

取得条件
  • API「opensearch」を使用
  • 取得件数を500件(最大値)
  • データプロバイダ IDを「iss-ndl-opac」
  • 種別を「1:本」
  • タイトルの検索キーワードとして「Excel VBA マクロ」を指定

また書籍データとして以下を取得しています。

取得データ
  • タイトル
  • 出版年月日


取得条件と取得データの詳細は、「外部提供インタフェース仕様書」をご確認ください。

●外部提供インタフェース仕様書
https://iss.ndl.go.jp/information/wp-content/uploads/2020/03/ndlsearch_api_20200302_jp.pdf

取得したデータをシートに「sample」へ出力します。

Option Explicit

Sub opensearchApiSample()

    Dim objDom As Object
    Dim nodes As Object
    Dim node As Object
    Dim apiUrl As String
    Dim row As Long
    Dim publicDate As String
    
    '検索キーワードを指定
    Const TITLE_KEYWORD As String = "Excel VBA マクロ"
    '出力開始行を指定
    Const START_ROW As Long = 2
    
    'URLを作成し以下を指定
    '┗API「opensearch」を使用
    '┗取得件数を500件(最大値)
    '┗データプロバイダ IDを「iss-ndl-opac」
    '┗種別を「1:本」
    apiUrl = "http://iss.ndl.go.jp/api/opensearch?cnt=500&dpid=iss-ndl-opac&mediatype=1&"
    
    'URLにタイトルへの検索キーワードを設定
    apiUrl = apiUrl & "title=" & WorksheetFunction.EncodeURL(TITLE_KEYWORD)
    
    Set objDom = CreateObject("MSXML2.DOMDocument")
    
    '同期処理でデータを取得
    objDom.async = False
    objDom.Load apiUrl
    
    Set nodes = objDom.SelectNodes("rss/channel/item")
    
    row = START_ROW
    
    For Each node In nodes
        
        With ThisWorkbook.Worksheets("sample")
            'タイトルを設定
            .Cells(row, 2) = node.SelectSingleNode("title").Text
            '出版年月日を取得
            publicDate = node.SelectSingleNode("pubDate").Text
            '出版年月日の年月日をyyyyMMdd形式で設定
            .Cells(row, 3) = Format(Mid(publicDate, 6, 11), "yyyy/MM/dd")
        End With
        
        row = row + 1
            
    Next node
        
    Set objDom = Nothing
    
End Sub

13行目の検索キーワード「TITLE_KEYWORD」の設定値を変更すれば、別のキーワードで検索できます。
※上記では「Excel VBA マクロ」を設定しています。

15行目の出力開始行「START_ROW」の設定値は、必要に応じて変更してください。
※上記では「2」を設定しています。特に理由は無いです。

PR

実行結果

国会図書館のWebサイトから、書籍データを取得できました。

実行結果
実行結果