2021/11/30 追記
もっと詳しい記事をアップしました。
そちらの記事では、参照設定等も詳しく解説したり、実際にGoogle検索を動かしたりしてますので、是非ご参照ください!
Selenium Basic と Chrome Driver を使用して、VB.NETでWebサーフィンを自動化するサンプル(改訂版)
とある仕事で、 VB.NET と Google Chrome を使ってスクレイピングをすることになったのだが、最初から結構つまづいた(笑)
あっちこっちググって、C#やPythonのサンプルも解析し、やっと基本形ができたので、備忘録を兼ねて公開!
用意したフォームは、真ん中にボタンが1個あるだけの、いたってシンプルなヤツなので、割愛。
参照設定等は、 http://sig9.hatenablog.com/entry/2015/01/13/010335 この辺を参考に…
そして本題!
①お約束の Imports 等の設定
Option Explicit On
Option Strict OnImports OpenQA.SeleniumImports OpenQA.Selenium.ChromeImports System.Threading.ThreadPublic Class MainDim objChrome As IWebDriver
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click'ChromeをオープンするIf ChromeStart() Then'正常にオープンできた場合、以下の処理をする'ページを読み込む待機時間を設定するobjChrome.Manage.Timeouts.ImplicitWait = New TimeSpan(30)'Googleへ飛ぶobjChrome.Navigate.GoToUrl("http://www.google.co.jp/")'一定時間インターバルを置くIntvl(20)End If'ChromeをクローズするChromeEnd()End Sub
'Chromeをオープンする関数Private Function ChromeStart() As Boolean'コマンドプロンプトは表示したくないDim DriverService = ChromeDriverService.CreateDefaultServiceDriverService.HideCommandPromptWindow = True'1024×768のサイズで開きたいDim Options As New ChromeOptionsOptions.AddArgument("--window-size=1024,768")TryobjChrome = New ChromeDriver(DriverService, Options)ChromeStart = TrueCatch ex As ExceptionMsgBox("Chromeの起動に失敗しました", MsgBoxStyle.Critical Or MsgBoxStyle.OkOnly)ChromeStart = FalseEnd TryEnd Function
'ChromeをクローズするサブPrivate Sub ChromeEnd()objChrome.Quit()objChrome.Dispose()End Sub
'インターバルPrivate Sub Intvl(prSeed As Integer)Dim wkIntvl As IntegerwkIntvl = 0'一秒以上、パラメータの指定値以下をランダムに決めるDo Until wkIntvl >= 1000wkIntvl = prSeed * 1000wkIntvl = CInt(Rnd() * CSng(wkIntvl))LoopSleep(wkIntvl)End Sub
End Class
実行イメージ