タイトル : Re: 無限スクロールのwebページ全体把握 投稿日 : 2020/05/25(Mon) 10:41 投稿者 : 魔界の仮面弁士
>後ろの処理をVB.NETで実現するために聞いてます。 ブラウザーは限定されていますか? Chrome や Edge 等が使用されるのか、それとも IE を使うのか(WebBrowser コントロールや InternetExplorer オブジェクトなど) > 一番したのページに早く到達する方法はありますか?ショートカットキーとか。 > VB.NETで出来るならばもちろんその方法が一番です。 キーボードショートカットなら、[Ctrl]+[End] で最後には到達します。 VB.NET の System.Windows.Forms.HtmlWindow なら ScrollTo メソッド JavaScript からなら、window.scroll メソッドなどを使えます。 https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.forms.htmlwindow.scrollto https://techacademy.jp/magazine/22793 とはいえ、無限スクロールなページでは、末尾到達時に 追加ロードで続きが生成されることが往々にしてあるので、 何をもって「最後」と判断されるかは、正直、Web サイトによってまちまちです。 そのため、End や scrollTo などを一回呼び出しただけでは、終端にたどり着けず、 追加ロードが終わった時点で、再度、同じ処理を繰り返し呼び出す必要があるでしょう。 ゆえに、どのようなローディング処理が背後で行われているかを解析して判断するか、 あるいは一定時間待機してみて、コンテンツの論理高さが変化しなくなった時点で ドキュメント末尾に到達した…と判断する方法などが思いつきます。 RPA ツールによっては、ページ末尾かどうかの判定のために 画像判定を採用することがあるようですね。( WinActor など) https://winactor.biz/samplescenario/2019/12/13_1523.html 厄介なのは、仮想スクロールを利用しているコンテンツの場合です。 このタイプは、スクロール領域の高さをあらかじめ固定で定めておき、 実際にその場所にスクロールが行われた時点で、その場所にコンテンツを 遅延ロードするようなものを指します。 Ctrl+End 一発で最終行に到達はしますが、途中の部分は歯抜けになるので、 このタイプでは、PageDown を繰り返す方法を採用する必要があります。 まぁ要するに、Web ページの構成によって最適な手法が異なるという事です。 |