Python Selenium

Seleniumでページスクロール(window.scrollTo)が効かない時の代替方法

この記事は約3分で読めます。

 

Seleniumでページをスクロールする方法としてはブラウザ上でJSのwindow.scrollTo()実行する方法が有名ですが、サイトによってはJSがうまく機能せずこの方法ではスクロールできないことがあります。

 

# 上手くいかなかったコード
driver.execute_script("window.scrollTo(0, 500);")

 

関連記事:【Python】Seleniumでスクレイピングする際によく使うメソッドのまとめ

 

スポンサーリンク
スポンサーリンク

対処法

 

こういった場合はクリックとページダウンのキー入力を使うことで下スクロール動作を行うこと方法が有効です。まず必要な追加モジュールを読み込みます(これはseleniumに入っているものなので、pipは必要ありません。)

 

# 必要なライブラリを追加
from selenium.webdriver.common.keys import Keys

 

コードは以下のような感じです。

 

selenium3の場合

 

# 一度body要素クリックしてからページダウンする 
driver.find_element_by_tag_name('body').click()
driver.find_element_by_tag_name('body').send_keys(Keys.PAGE_DOWN)

 

ページ最下部にスクロールしたければfor文などでPAGE_DOWNを繰り返すとよいです

 

<コード例>

# 10回PAGE_DOWNキーを入力する
for i in range(10):
    driver.find_element_by_tag_name('body').send_keys(Keys.PAGE_DOWN)

 

selenium4の場合

 

driver.find_element(By.TAG_NAME,"body").click()
driver.find_element(By.TAG_NAME,"body").send_keys(Keys.PAGE_DOWN)

 

# PAGE_DOWNを10回押す
for i in range(10):
    driver.find_element(By.TAG_NAME,"body").send_keys(Keys.PAGE_DOWN)

 

終わり

 

jsはセキュリティー対策で無効化されている場合があるのでその場合はファンクションキー(F1~12)を使って動作するようなプログラムにしてあげるとよいです。

 

またselenium3と4で書き方が変わっている点も注意してください。

 

<確認プログラム>

import selenium
print(selenium.__version__)

 

関連記事:Seleniumで「WebDriver; object has no attribute find_element_by_○○」が表示される原因と解決法

 

では~

 

 

 

関連記事:【Python】メリカリの検索結果から商品名・価格・URLをSeleniumで取得するサンプルプログラムを作ってみた

 

関連記事:【Python】Seleniumで「element click intercepted」でボタン要素がクリックできない時の対策

 

関連記事:Seleniumで「WebDriver object has no attribute」が起きた時の対策と解決法

 


プログラミング・スクレイピングツール作成の相談を受け付けています!

クラウドワークス・ココナラ・MENTAなどでPython・SQL・GASなどのプログラミングに関する相談やツール作成などを承っております!

過去の案件事例:

  • Twitter・インスタグラムの自動化ツール作成
  • ウェブサイトのスクレイピングサポート
  • ダッシュボード・サイト作成
  • データエンジニア転職相談

これまでの案件例を見る

キャリア相談もお気軽に!文系学部卒からエンジニア・データサイエンティストへの転職経験をもとに、未経験者がどう進むべきかのアドバイスを提供します。


スポンサーリンク
/* プログラミング速報関連記事一覧表示 */
ミナピピンの研究室

コメント

  1. […] 関連記事:Seleniumでページスクロール(window.scrollTo)が効かない時の代替方法 […]

タイトルとURLをコピーしました