このページの概要
※このページは当サイトのPRを含んでいます。
Webスクレイピングをしていると①ブラウザを手動で操作する⇒②スクレイピングで自動処理のように、手動操作結果をもとにスクレイピングを実施したい場面があります。例えば一連の入力をスクレイピングによってシステムへ自動転記をし、備考に書かれている内容については、人が入力内容を判断して入力が必要な場合です。システム画面の構成によっては自動⇒手動⇒自動と続けたいかもしれません。このページでは上記の例のようにExcelVBAで起動済のGoogleChrome(以下chrome)をキャッチして自動操作をする方法について説明します。
モジュールレベル変数としてWebDriverを宣言する
ExcelVBA(マクロ)の仕様上、モジュールレベル変数(プロシージャの外で宣言した変数)は意図的に初期化しない限り、Excelの起動中は値を保持します。これはオブジェクト変数も同様であるため、WebDriverを格納する変数をモジュールレベル変数として宣言しておくことで、マクロ終了後も、WebDriverの属性が保持されます。そのためマクロで起動したchromeを手動で操作し、そのまま次のマクロで起動した情報を引き継いで自動操作をすることができます。
より簡単な解決策
当サイトでは「LesserScraping」という劣化版(Lesser)のSeleniumBasicを独自に開発しており「LesserScraping」ではExcelファイルごとに専用のchromeを定義することができ、専用chromeがすでに起動された状態でマクロを実行する場合、起動済のchromeを自動的にキャッチし処理を実施します。
業務用PCでスクレイピングするなら「LesserScraping」
業務用PCでExcelVBA(マクロ)からWebスクレイピングをしようとすると「Selenium Basic」の導入でつまずく方は多いです。当サイトでは劣化版Selenium Basicと呼べる「Lesser Scraping」を開発し無償で公開しています。
Comment