Menu
【Excel】webスクレイピング関連
【PowerAutomate】webスクレイピング関連
Excel
練習1 aタグをクリック
<下記のaタグのデイレコをVBAでクリックしてみましょう
デイレコ
html
1 | <a href="" >デイレコ</a> |
VBA
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | Sub aタグをクリック() '変数とオブジェクト作成 Dim objIE, obj As Object Dim d As String Set objIE = CreateObject("Internetexplorer.Application") '画面設定 With objIE .Visible = True .navigate "http://dailyrecords.blog/webスクレイピング" End With '読み込み待ち Do While objIE.Busy = True Or objIE.readyState <> 4 DoEvents Loop 'aタグをクリック For Each obj In objIE.document.getElementsByTagName("a") If InStr(obj.outerHTML, "デイレコ") > 0 Then obj.Click End If Next MsgBox "finish" 'オブジェクト破棄 Set objIE = Nothing End Sub |
練習3 aタグのリンク文字を取得書込み
下記のaタグのリンク文字をVBAでセルA1に書出してみましょう
VBA
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | Sub aタグのリンク文字をA1セルに書き込む() '変数とオブジェクト作成 Dim objIE, obj As Object Dim d As String Set objIE = CreateObject("Internetexplorer.Application") '画面設定 With objIE .Visible = True .navigate "http://dailyrecords.blog/webスクレイピング" End With '読み込み待ち Do While objIE.Busy = True Or objIE.readyState <> 4 DoEvents Loop 'セルA1にリンク文字を書き込む For Each obj In objIE.document.getElementsByTagName("a") If InStr(obj.outerHTML, "A1セルです") > 0 Then Range("A1") = obj.innerText End If Next MsgBox "finish" 'オブジェクト破棄 Set objIE = Nothing End Sub |
練習4 tableクラスをを取得
下記のtableクラスをVBAでセルA1に書出してみましょう
th1を取得できましたね! | th2を取得できましたね! | th3を取得できましたね! |
---|---|---|
tdを取得できましたね! | tdを取得できましたね! | tdを取得できましたね! |
tdを取得できましたね! | tdを取得できましたね! | tdを取得できましたね! |
html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <table class="table"> <thead> <tr> <th>th1を取得できましたね!</th> <th>th2を取得できましたね!</th> <th>th3を取得できましたね!</th> </tr> </thead> <tbody> <tr> <td scope="row">tdを取得できましたね!</td> <td>tdを取得できましたね!</td> <td>tdを取得できましたね!</td> </tr> <tr> <td scope="row">tdを取得できましたね!</td> <td>tdを取得できましたね!</td> <td>tdを取得できましたね!</td> </tr> </tbody> </table> |
VBA
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | Sub tableクラス取得() '変数とオブジェクト作成 Dim objIE, obj As Object Dim d As String Set objIE = CreateObject("Internetexplorer.Application") '画面設定 With objIE .Visible = True .navigate "http://dailyrecords.blog/webスクレイピング" End With '読み込み待ち Do While objIE.Busy = True Or objIE.readyState <> 4 DoEvents Loop 'セルA1にtableクラスを書き込む For Each obj In objIE.document.getElementsByClassName("table") Cells(1, 1) = obj.innerText Next MsgBox "finish" 'オブジェクト破棄 Set objIE = Nothing End Sub |
練習5 ボタンをクリック
下記のボタンをVBAでクリックしてみましょう
html
1 | <button type="button">ボタン</button> |
VBA
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | Sub ボタンをクリック() '変数とオブジェクト作成 Dim objIE, obj As Object Dim d As String Set objIE = CreateObject("Internetexplorer.Application") '画面設定 With objIE .Visible = True .navigate "http://dailyrecords.blog/webスクレイピング" End With '読み込み待ち Do While objIE.Busy = True Or objIE.readyState <> 4 DoEvents Loop 'button ボタンをクリック For Each obj In objIE.document.getElementsByTagName("button") Debug.Print obj.innerText If InStr(obj.outerHTML, "ボタン") > 0 Then obj.Click End If Next MsgBox "finish" 'オブジェクト破棄 Set objIE = Nothing End Sub |
練習6 送信ボタンをクリック
下記の送信をVBAでクリックしてみましょう
html
1 | <input type="submit" value="送信" /> |
VBA
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | Sub 送信ボタンをクリック() '変数とオブジェクト作成 Dim objIE, obj As Object Dim d As String Set objIE = CreateObject("Internetexplorer.Application") '画面設定 With objIE .Visible = True .navigate "http://dailyrecords.blog/webスクレイピング" End With '読み込み待ち Do While objIE.Busy = True Or objIE.readyState <> 4 DoEvents Loop 'input 送信をクリック For Each obj In objIE.document.getElementsByTagName("input") Debug.Print obj.innerText If InStr(obj.outerHTML, "送信") > 0 Then obj.Click End If Next MsgBox "finish" 'オブジェクト破棄 Set objIE = Nothing End Sub |
練習7 テキストエリアに値を入力
下記のテキストエリアにVBAで値を入力してみましょう
html
1 | <input type="text" /> |
VBA
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | Sub テキストボックスに入力() '変数とオブジェクト作成 Dim objIE, obj As Object Dim d As String Set objIE = CreateObject("Internetexplorer.Application") '画面設定 With objIE .Visible = True .navigate "http://dailyrecords.blog/webスクレイピング" End With '読み込み待ち Do While objIE.Busy = True Or objIE.readyState <> 4 DoEvents Loop 'テキストボックスにデイレコと入力する For Each obj In objIE.document.getElementsByTagName("input") If InStr(obj.outerHTML, "text") > 0 Then obj.Value = "デイレコ" End If Next MsgBox "finish" 'オブジェクト破棄 Set objIE = Nothing End Sub |