Internet Explorerのサポート終了が迫っており、Webサイトのスクレイピング代案を検討しないといけません。
当方では、今後SeleniumBasicを用いる予定です。
ブラウザの読み込み待ちのサンプルコード
今回はSelenium操作で必要な、待機処理です。
指定したページへ遷移しても、Webページの読込前に次の処理をすると、エラー発生してしまいます。
IE自動操作とは異なり、Seleniumは画面が表示されるまで、自動で待ってくれます。
そのため、読み込み待ちはあまり気にする必要はありませんが、ページによっては明示してWaitすべきです。
■待った方がよいページ
・JavaScriptが仕込まれているページ
・iFrameが仕込まれているページ
→ページ全体は読み込みできたがJavaScriptの処理が追い付かない。
・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でのネット記事は少なく困っている方も多いと思います。
弊社で代行開発も可能ですので、お気軽にご用命ください。
コメント