Selenium(Edge/Chrome)

Selenium「ブラウザの読み込み待ち」をする【ExcelVBA】

Internet Explorerのサポート終了が迫っており、Webサイトのスクレイピング代案を検討しないといけません。
当方では、今後SeleniumBasicを用いる予定です。

ブラウザの読み込み待ちのサンプルコード

今回はSelenium操作で必要な、待機処理です。
指定したページへ遷移しても、Webページの読込前に次の処理をすると、エラー発生してしまいます。

IE自動操作とは異なり、Seleniumは画面が表示されるまで、自動で待ってくれます。
そのため、読み込み待ちはあまり気にする必要はありませんが、ページによっては明示してWaitすべきです。

■待った方がよいページ
・JavaScriptが仕込まれているページ
・iFrameが仕込まれているページ
→ページ全体は読み込みできたがJavaScriptの処理が追い付かない。
Dim driver As New Selenium.WebDriver
Public Sub sample()
    '■chrome かEdgeどちらかを選択。
    driver.Start "chrome"
'   driver.Start "edge"

    '■該当ページへ遷移
    driver.Get "https://vba-create.jp/"
    
    '■ブラウザ読み込み待ち(ページロード待ち)する
    driver.Wait 1000    '1秒待つ
    
End Sub

注意点

Seleniumのスクレイピングは100%動くものと考えて、マクロを組む概念は捨てましょう。
エラーとうまく付き合い、対処するように考えましょう。

上記でうまくいかない場合はWebページに指定要素が存在するかチェックして、
存在しなければWait処理を追加してLoopさせればよいと考えます。

SeleniumBasicについて

Internet Explorer11 のサポート期限が2022年6月までと、スクレイピング自体入れ替えていく必要があります。
今一番スムーズなのはSeleniumBasicを使用したスクレイピングと考えます。

但し、VBAでのネット記事は少なく困っている方も多いと思います。
弊社で代行開発も可能ですので、お気軽にご用命ください。

コメント

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