小説データを取得してみよう
コピペでやってみてください。
「今回はなろう小説APIを使ってみるよ。いろいろと説明してきたけど、こういったものはやってみないと感覚がわからないからね。実践あるのみだよ」
「そうですね、なんとなくどんなことができるかは分かったんですけど、どう使うのかは全然ですね」
「なるべく理解できるように説明するから、やってみてね」
「はーい」
「まず、『エクセルでデータ収集を行うための準備』のところで作ったExcelファイルを開いてね
Excelが開いたら、開発タブの[VisualBasic]をクリック。VBE(Visual Basic Editor)を立ち上げてね。
標準モジュールの『Module1』をダブルクリックして、以下のコードをコピペして追加してね。
'*********Module貼り付け用*************
Public Function GetAPIData(Strurl As String) As String
Dim objXMLHttp As Object, strbuf As String
Sleep 1000 '1秒待機。
Set objXMLHttp = CreateObject("MSXML2.XMLHTTP") 'Set
objXMLHttp.Open "GET", Strurl, False
objXMLHttp.send '送信
strbuf = objXMLHttp.responseText 'APIの結果を変数に代入する
'Debug.Print strbuf 'イミディエイトウィンドへの貼り付け
Set objXMLHttp = Nothing 'オブジェクトのクローズ
GetAPIData = strbuf
End Function
'********************************************
」
「できました。これって何をするものなんですか?」
「これは、HTTP通信をしてデータを取得するものだよ。APIの提供元にデータを問い合わせて、データを貰うときに使う感じだね。
例題もやってみようか。
開発タブの挿入を選択して、ActiveXコントロールのところの四角の画像をクリックしてね。
そしたらSheet上でドラッグしてみて。そうするとボタンが作れるよ。
ボタンができたらそれをダブルクリックしてみて。
そうすると、こんな画面になると思う。
そこにこんな文字をコピペしてみて
'---------------------
'イミディエイトウィンドウに表示する。
Debug.Print GetAPIData("https://api.syosetu.com/novelapi/api/?lim=1")
'デバッグ時によく使うコマンド
'---------------------
Debug.Printはデバッグ(プログラムのテスト)ではよく使うコマンドだから覚えといて、あとmsgboxもよく使うね。
」
「ふむふむ」
「それが終わったらシートに戻って、デザインモードを解除してね。デザインモードが有効だとボタンが押せないからね。色がついていたら有効になってるよ。クリックするとON OFFを切り替えられるよ。
あ、ちなみに、デザインモードはボタンの形や文字を変えるときに有効にするかんじだね。
プロパティをクリックするとデザインを変えられるよ。そこのCaptionで表示される文字を変えられるね。
」
「ほうほう」
「デザインモードを解除したらボタンを押してみて。そうするとイミディエイトウィンドウにこんな風に文字が表示されるよ。
」
「おぉー。なにか出てきましたね。これって何なんですか?」
「これは一番最近更新された小説のデータが表示されてるよ。一番最初のallcountが全小説数、そこから下は小説情報だよ。
URLの部分を変えると自分の好きなデータが取れるね。これを応用すればデータ分析、解析が出来るよ」
「へー、どう応用するんだろう?」
「ちょっとしたノウハウなんかもあるから、それについてはおいおい説明するよ。
今回で気を付けてほしいのはSleep関数だね。
待ち時間を入れるのにSleep関数を使ってるんだけど、これを外すとノータイムでアクセスされる。
連続して関数を使うときには、サーバーへの負荷が非常に大きくなるから、これを外さないようにしてね。
ざっとだけどこんな感じでデータ収集は行うよ。ここまではいいかな?」
「はい、なんとか」
「では次回は取得したデータをExcel Sheetに貼り付けていくよ」
「はい! 頑張ります」
質問があれば感想欄にお書きください。
なおイミディエイトウィンドウが立ち上がってない人はVBEの表示->イミディエイトウィンドをクリックすると出てきます。