tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル 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 ページの構成によって最適な手法が異なるという事です。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。