タイトル : Re^3: 無限スクロールのwebページ全体把握 投稿日 : 2020/05/25(Mon) 16:01 投稿者 : 魔界の仮面弁士
> fairefoxを使用します。 『Firefox』ですかね。手元に用意が無いので試せませんが…。 VB から AxMozillaBrowser を使っているのか、 VB から Firefox を操作しようとしているのか、 それとも Firefox の操作は手動で、保存後の解析を VB で行おうとしているのかはさておき。 > CTRL+endでは、最後にたどり着けません。まだ読み込んでる感じです。 読み込み終わって、ページが追加されたら、 もう一度 CTRL+END しなおす必要があると思います。 自動化する場合は、何をもって「最後まで読み込まれたか」を定義する必要がありますね。 > 単にスクロールしなくなるのでわかると言うだけです。 ローディングが一定時間発生しなくなったら…ですかね。 広告等が定期的にローディングされるようなサイトだと、通信先の判定も必要になるかもしれませんが。 > JavaScript全くわかりませんが。 HTML DOM の操作が行えれば、言語は何でも良いですよ。 JavaScript はそのための有力な選択肢の一つですね。 > この記事実行の仕方が分かりませんが。 VB から呼び出す前に、一時的にテストするだけなら、 ブラウザーの開発ツールを起動して、コンソールから scoll メソッドや scrollTop を操作するコードを実行すれば OK です。 https://developer.mozilla.org/ja/docs/Tools 手動でもっと簡単に呼び出せるようにするなら、「ブックマークレット」にしておくのが良いでしょう。 ページ全体のスクロールの場合は、window オブジェクトの scrollBy メソッドもしくは scrollTo (あるいは scroll) メソッドのいずれかを用います。 https://developer.mozilla.org/ja/docs/Web/API/Window/scrollBy https://developer.mozilla.org/ja/docs/Web/API/Window/scrollTo scrollBy は「指定された量だけ、現在の位置からスクロールさせる」ためのものです。 scrollTo と scroll は同じ意味で、「特定の座標までスクロールさせる」ためのものです。 ページ全体ではなく、ページの一部のみがスクロールするような Web ページの場合、 親コンテナとなるボックス要素に対して、scrollTop プロパティを書き換えるようにします。 https://syncer.jp/Web/API_Interface/Reference/IDL/Element/scrollTop/ たとえば、ページの一部だけスクロールするサンプルとして https://demo.syncer.jp/1403/ がありますが、これを例とすると、ブラウザーの開発ツールから、 コンソール(Chrome や IE でも構わない)上で下記を実行すれば OK です。 document.getElementById("hoge").scrollTop = 0; // 一番上が表示された状態 document.getElementById("hoge").scrollLeft = 0; // 一番左まで表示された状態 document.getElementById("hoge").scrollTop = 100000000; // 目一杯下までスクロールした状態 document.getElementById("hoge").scrollLeft = 120; // 右方向に120pxスクロール ページ全体がスクロールするようなサイト、たとえ Facebook などでは、 window.scrollBy(0, 100000000); を呼び出します。※指定可能な上限値はブラウザーによって異なります。 いずれの場合も、即座に次のコンテンツがロードされるので、 この処理を繰り返し呼び出す必要があるでしょう。 自動操作で繰り返す際には、終端の無いサイト構成の場合に備えて、 処理回数あるいは処理時間に制限を持たせておくと良いかもしれません。 また、上記以外の選択肢としては、UI Automation を用いてスクロール操作を 行う方法が思い当たりますが、手元に Firefox が無いため、実際に可能か否かは未検証です。 |