国会図書館はAPIを提供しています!
APIを使用することで、
・国会図書館のWebサイトから
・書籍データを取得
できます!
この記事ではAPI「opensearch」の
使用方法を記載します!
API「opensearch」とは
国会図書館が提供しているAPIの1つです。
API「opensearch」を使用することで、国会図書館のWebサイトから書籍データを取得できます。
詳細は公式サイトをご確認ください。
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
実行結果
国会図書館のWebサイトから、書籍データを取得できました。