LS000028_GoogleChromeで明示的にスクレイピングを終了させる

GoogleChromeで明示的にスクレイピングを終了させる LesserScraping

このページで紹介するメソッド

「LesserScraping」では明示的にWebDriverへ終了指示をださずとも、ExcelVBA(マクロ)の処理が終了に合わせてWebDriverは終了します。Webスクレイピングの実施後、後続の処理がそのまま続く場合、明示的にWebDriverの処理を終了させたい場合があるかもしれません。またGoogleChrome(以下chrome)のウィンドウを閉じる「CloseCurrentWindow」メソッドは1ページずつしか閉じることができません。このページではWebDriverへ終了指示をだし、オプションでウィンドウを閉じることもできる「Quit」メソッドについて解説します。

事前準備(LesserScraping)

chromeのプロファイルを作成済、かつ「LesserScraping」というクラスが用意されていることを前提に解説をすすめますが、何を言っているかわからないよという方は、まず初回記事を読んでください。

引数

第1引数:window_closed
 True  ・・・ 操作中のウィンドウをすべて閉じ、WebDriverを終了する。
 False ・・・ 操作中のウィンドウを閉じず、WebDriverへ終了指示を出す。

サンプルコード

Private Sub Test_LesserScraping_Quit()
Dim Driver As LesserScraping: Set Driver = New LesserScraping
Call Driver.Start
Call Driver.NavigateTo("https://funcref.com/lesserscraping/", 1500)
Call Driver.NewWindow
Call Driver.NavigateTo("https://funcref.com/", 1500)
Call Driver.Quit(True)
Set Driver = Nothing
End Sub

【結果】ウィンドウがすべて閉じれらてスクレイピングが終了しました

上記サンプルコードを実行すると当サイトの「LesserScraping」のページへ遷移します。次に新しいタブが開き当サイトのトップページへ遷移します。最後に両方のタブを閉じてスクレイピングを終了します。

補記:WebDriverが終了するタイミング

WebDriverへ終了指示を出すと「chromedriver.exe」が処理を終了する準備を始めます。この時、操作対象のウィンドウがまだ開いている場合、実行ファイルは待機状態のまま終了しません。ユーザーがすべてのウィンドウを閉じたときに実行ファイルの処理は終了します。指示をださずにマクロを終了した場合「LesserScraping」のクラスが解放されるときに自動的に終了指示がでるようになっています。

Comment