2017年11月24日

Excel VBAによるWebスクレイピングのtips 〜Webページへのアクセス〜

応援クリックを1日1回宜しくお願いいたします。



ExcelマクロによるWebページへのアクセス

小話をいくつか。


Sub ABC()
End Sub
と書くと、実行できるプログラム「ABC」となります。

Dim i As Integer
i = 1
と書くと、整数値変数iを宣言し、値1を代入します。

i = Cells(2, 5).Value
と書くと、E2セルの値を代入します。数が入力されていた場合、数値として扱えます。

Do While i < 0
i = i + 1
Loop
と書くと、While文を使用できます。

Do While i <> 1
Loop
と書くと、iが1でない間、繰り返します。

Dim chrome As Variant
Set chrome = CreateObject("WScript.Shell")
chrome.Run ("chrome.exe -url " & "https://www.google.co.jp/search?q=" & Cells(1, 1).Value)
と書くと、Google Chromeを起動し、A1セルに入力されている文字列でGoogle検索します。

Application.SendKeys "^w"
と書くと、Chromeのウィンドウがアクティブになっている場合、表示しているタブを閉じます。
「Ctrl + W」をキーボード送信しています。

Subの前に
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
を書き、Sub 〜 End Subの間に
Sleep (1234)
と書くと、プログラム実行を1.234秒停止します。

行の最初に
'
と書くと、コメント文となります。


これらをまとめると、A列の1行目から連続して入力されている全ての入力値をGoogle検索するプログラムとなります。
開いたタブを閉じないでおきます。
また、GoogleにDDoS攻撃(サイバー攻撃)と判定されないように1秒ごとに検索するようにします。

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Sub R()

Dim i As Integer
i = 1

Dim chrome As Variant
Set chrome = CreateObject("WScript.Shell")

Do While Cells(i, 1).Value <> ""
chrome.Run ("chrome.exe -url " & "https://www.google.co.jp/search?q=" & Cells(i, 1).Value)
Sleep (10000)
' Application.SendKeys "^w"
i = i + 1
Loop

End Sub



単に複数のURLを開くというマクロでした。

URLを開くだけでGoogle検索できるのは、Google検索がURLに検索ワードを追加するだけでできる(GET)方式をとっているからです。


とあるサイトを開き、ある入力フォームにある文字列を入力し、検索ボタンをクリックし、検索結果のページの表示完了を待ち、ある表示欄の結果を取得し、Excelシートのあるセルに出力するマクロはのちほど。



続きを読む
タグ:web IT 技術

posted by Line Segment at 18:00 | Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする