【Edge×Selenium×VBA】スクレイピング時の実行時エラー0への対策

お知らせ記事には広告が含まれておりますがExcelのスキルUPに繋がる様コンテンツ自体は手を抜かずに作成しております

Edge×Selenium×VBAでWebスクレイピング

Edge×Seleniumbasic×VBAでWebスクレイピングを検討されている方向けの記事です。

自身の経験談を記事にしました。

Seleniumbasic(セレニウムベーシック)のダウンロード、インストール、Edgeドライバーのセット完了。

いざ実行・・・してみましたが「実行時エラー0」が出てしまった方向けに解説を用意しました。

この状態ではSeleniumは動かないのでスクレイピングできません。困りました・・・。

Edgeのドライバーをインストール時に何か操作を間違えたかも?と考えてしまうのですが他に要因があります。

EnjoyExcel
EnjoyExcel

私いつもはChromeを使っています。

今回Edgeで環境構築した際に実行時エラー0が出てしまいました。

実はEdgeの方がひと手間多いです。環境構築時にやらないといけない事が1つ増えます。

Chromeでしか環境構築してない方は作業を知らない事が想定されます。

作業は簡単です。一緒に確認していきましょう。

ブラウザ側のバージョンアップによりEdgeドライバーの入れ替えが必要な方にも参考になる記事です。

関連記事

初期設定(環境構築)から簡単にコードを書く方法について解説しています。

ブラウザはChromeを使っていますが同様の方法で初期設定(環境構築)、コードが書けるようになります。

おすすめ書籍

Webスクレイピングは書籍で勉強しました。

  • 初期設定をしっかり解説しています
  • 関連のメソッドを分かりやすくリスト化してあります
\Webスクレイピングにおすすめ/

エラーの原因:ドライバーの名前を変えてない

初期設定(環境構築)の時に各ブラウザーのドライバーをインストールします。

Edgeのドライバーをインストールした際はmsedgedriver.exeという名前が付いています。

これをそのままSeleniumbasicの環境に置いてコードを実行してもエラーになります。

先頭の文字からmsを消してedgedriver.exeにしてからSeleniumbasicの環境にセットしましょう。

Edgeドライバーをインストールする方法

まずはご自身が使用しているEdgeのバージョンを確認する必要があります。

画像とリストで手順を確認しEdgeのバージョンを確認してください。

番号工程内容
1「・・・」を押下画面右上の・・・をクリック
2「設定」を押下画面右中央やや下の設定をクリック
3「Microsoft Edge」についてを押下画面左中央やや下のMicrosoft Edgeについてをクリック
4バージョンの確認画面中央からやや左上にバージョンの記載有り
Edgeのバージョンを確認する手順です

続いてEdgeドライバーをダウンロードします。

アクセスしていただくと最初の画面からやや下に最新バージョンという文字が出てきます。

この辺りにご自身のEdgeと同じバージョンの文字がないか確認して下さい。

良く分からない方はこちらをご覧ください

(例)113.0.1774.3 というバージョンでOSがWindowsの時は以下画像の赤枠をクリッ

ひとまずデスクトップにダウンロードしてください。

おそらくZipファイルがダウンロードされます。

展開(解凍)するとmsedgedriver.exeDriver_Notesが居ます。

このmsedgedriverの名前を変更します。

先頭のmsを取ってedgedriver.exeにしてください。

EdgeドライバーをSeleniumの環境にセット

最後にedgedriver.exeを所定の場所にセットします。

Seleniumのインストール先がデフォルトの方は以下アドレスを確認ください。

C:\Users\ここは各ユーザー名\AppData\Local\SeleniumBasic

既存のedgedriver.exeと置き換えてください。

これで実行時エラー0の対策は完了です。

Chromeはそのまま使える

余談ですがChromeドライバーはリネーム(名前を変える)する必要はないです。

ChromeドライバーをダウンロードしてexeファイルをそのままSeleniumの環境に置いてください。

EdgeもChromeもプロパティやメソッドは同じ

EdgeでもChromeでも持っているプロパティやメソッドは同じでした。

まだEdgeでしっかりSeleniumを使えてないのですがおそらくChromeと同じことができます。

Edgeでgoogleにアクセスして検索窓にキーワードを入力し検索ボタンを押すというコードです。

検索した後はそのままブラウザをクローズしています。

Sub EdgeでGoogle検索()
 
Dim Driver As New EdgeDriver
 
Driver.Get "https://www.google.com"
 
Driver.FindElementByName("q").SendKeys ("VBA Webスクレイピング 初期設定")
 
Driver.Wait 1000  
 
Driver.FindElementByName("btnK").Click
 
Driver.Close
Set Driver = Nothing
 
End Sub

さらに詳しいコードの書き方はこちらの記事で確認ください。

アウトプットの例を紹介

Excelのワークシート上にYahooのニューストピックスをハイパーリンク付きで抽出しています。

もちろん1クリックです。加えて再現性もあるので何度でもニューストピックスを取得できますよ。

コードは同じでもブラウザ側に差がある

1つのURLにChromeでアクセスするのとEdgeでアクセスするのではURL内のパスが変わる事があります。

XPathを取得した際にパスが通らない場合がある

一部#shadow-rootという文字が出てきてパスが繋がってない場所が出てくる可能性があります。

shadow-rootについては特殊なアクセス方法を使わないとデータが取得出来ません

私が見つけたのはEdgeであればパスが開通していますがChromeだとshadow-rootになるURLでした。

理由は省略しますがどちらも閲覧するうえでは全く問題ありません。

ことスクレイピングとなると困ります。パスが繋がってないので情報が取得出来ません。

対策は別途記事を用意します。

すぐ対策したい方はスクレイピングの際にブラウザを変えると解決する可能性があります。

画面遷移に差がある

何らかの操作をした後にChromeだとAという画面が出るがEdgeだと出ないなど細かい差もあります。

これは実際に作業をしてみないと分からないです。ご自身で確認ください。

よってChromeで通ったコードはイコールでEdgeで使えるわけではないです。ご注意ください。

まとめ

まずはEdgeドライバーのリネームだけ気を付けましょう。これで実行時エラー0は対策できます。

ただし私の様にChromeでしかスクレイピングをやった事が無い人は気付けないです。

どうかこの記事に辿り着いていただく事を願うばかりです。

あとはブラウザ毎に画面遷移の差を見て動きにあったコードを用意するまでです。

これでEdgeでもWebスクレイピングが出来る様になったはずです。是非試してみてください。

EnjoyExcel

タイトルとURLをコピーしました