実装コード
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 は本当に便利ですね。
以上、ありがとうございました。
初めまして、こんにちは!有益な情報をありがとうございます。当方はPythonを少しかじった程度の知識しかないのですが、実際にこの記事でスクロールを実装することができました。
が、しかし1点分からないことがありコメントさせていただきました。
スクロールする終点の「” + str(i) + “」が何を言ってるのか←(失礼)分からないのですが、これはPythonのエッセンスですかね?
ありがとうござます。
「” + str(i) + “」の部分はループ中の変数 i を str() で文字列にしてから、
“window.scrollTo(0, “ と結合しています。
よって、 i の値が10 だった場合の文字列は
window.scrollTo(0, 19);
となります。