プログラミング

【Python】Seleniumでブラウザのゆっくりスクロール【自動化】

テストやスクレイピングの際にSeleniumを利用しています。

しかし、画像の遅延ロードをおこなっている場合に画像を読み込みされるように画像の位置までスクロールする必要がありました。

そのためにSeleniumでブラウザをスクロールさせる方法を調べると南さんという方が公開されていました。

スクロール速度を変更できるように変更したので、コードを共有します。

実装コード

def scroll_down(self, speed):
    # ページの高さを取得
    height = self.browser.execute_script("return document.body.scrollHeight")

    # ループ処理で少しづつ移動
    for i in range(1, height, speed):
        self.browser.execute_script("window.scrollTo(0, " + str(i) + ");")

説明

execute_scriptでJavaScriptを実行することが可能です。

まず、ページの高さを取得します。

# ページの高さを取得
height = self.browser.execute_script("return document.body.scrollHeight")

次にページの高さに到達するまでwindow.scrollToでスクロールを繰り返します。

1回あたりのスクロール量は引数のspeedで設定しています。

speedの数値が大きいほどスクロール速度が早くなります。

# ループ処理で少しづつ移動
    for i in range(1, height, speed):
        self.browser.execute_script("window.scrollTo(0, " + str(i) + ");")

まとめ

Python + Selenium は本当に便利ですね。

以上、ありがとうございました。

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA