LS000002_GoogleChromeを指定のURLへ遷移させる

GoogleChromeを指定のURLへ遷移させる LesserScraping

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

Webスクレイピングではブラウザを起動したあと、操作対象となるWebページへ遷移をします。このページではExcelVBA(マクロ)で自動的に起動したGoogleChrome(以下chrome)を指定したURLへ遷移させる「NavigateTo」メソッドについて解説します。

事前準備(LesserScraping)

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

引数

■url
 ⇒遷移する先のURLを文字列で指定します。

■wait_time_value
 ⇒「LesserScraping」では、残念ながらマクロの動作とchrome(とWebDriver)の動作は一致しません。まだブラウザが読み込み待ちであるにもかかわらず、マクロは次の処理へ進めようとします。そのため「LesserScraping」でスクレイピングをするときは操作の都度、待ち時間を入れてあげる必要があります。別途メソッドも用意していますが、各メソッドに待ち時間を渡して動作を一定時間止めることも可能です。ミリ秒(1000ミリ秒=1秒)単位で指定します。

サンプルコード(クリックでコピー)

Private Sub Test_LesserScraping_NavigateTo()
Dim Driver As LesserScraping: Set Driver = New LesserScraping
Call Driver.Start
Call Driver.NavigateTo("https://funcref.com/lesserscraping/", 1000)
Set Driver = Nothing
End Sub

待ち時間の設定について

「NavigateTo」メソッドでは待ち時間を指定しない場合、100ミリ秒(0.1秒)待ちます。これはWebスクレイピングの待ち時間としてはかなり短いです。この処理に続けてクリック操作等を入れると、まだページの読み込みが終わっていないのにクリックしようとして、対象が見つからずエラーということにつながります。特にWebシステム(読み込みが遅いサイト)などでエラーが発生しやすいです。そのため操作対象のシステムや自身のネットワーク通信環境に合わせてチューニングをしましょう。サンプルコードでは1000ミリ秒(1秒)の待ち時間を設定しています。ただし、遷移して動作が終了するマクロであれば「0」を指定する方が正しいでしょう。

【結果】指定URLへの遷移に成功しました

上記、サンプルコードを実行するとchromeが自動で立ち上がり当サイトの「LesserScraping」ページへ遷移し、1秒停止した後、マクロが終了します。

LesserScraping紹介ページ

補記:ページの遷移待ちについて

今回説明は見送りましたが、待ち時間を設定することに加えて、目的のページにたどり着いたか判定する動作をいれるとスクレイピングの精度が向上します。「LesserScraping」では操作対象が見つからない場合にエラーをエスケープする処理はいれていません。エラー終了します。そのため、独立した判定用プロシージャ(「Is~」みたいなもの)を作成し遷移が完了するまでDo~Loopで待機するというような処理をします。具体的なコードサンプルは別記事に掲載します。

業務用PCでスクレイピングするなら「LesserScraping」

業務用PCでExcelVBA(マクロ)からWebスクレイピングをしようとすると「Selenium Basic」の導入でつまずく方は多いです。当サイトでは劣化版Selenium Basicと呼べる「Lesser Scraping」を開発し無償で公開しています。

 

Comment