selenium_with_python_ページをスクロールダウン

 

selenium with python を使って

垂直方向に長いページを

下のほうの部分が見えるように

スクロールダウンできるようなメソッドは

ないでしょうか?


そのようなメソッドでのスクロールの移動の量は

ピクセル単位でしょうか?



Selenium を使って垂直方向に長いページをスクロールするには、

`execute_script` メソッドを使用して 

JavaScript を実行する方法があります。


この方法では、スクロールの移動量をピクセル単位で指定できます。


### 基本的なスクロールダウンの方法


以下は、100ピクセルずつスクロールダウンする例です。



```python


from selenium import webdriver

import time


# WebDriver のセットアップ (例: ChromeDriver)

driver = webdriver.Chrome()



# 対象ページを開く

# 長いページのURLに置き換えてください


driver.get("https://example.com")  



# スクロールダウン (100ピクセルずつ)

for _ in range(10):  # 10回スクロールダウン


    driver.execute_script(

"window.scrollBy(0, 100);")

# スクロール間の待機時間 (任意)

    time.sleep(0.5)  


# ブラウザを閉じる

driver.quit()



```


### スクロール量の制御


- 上記の例で `window.scrollBy(0, 100);` の

 `100` がスクロール量をピクセル単位で指定しています。


- `0` は水平方向のスクロール量を意味し、

`100` は垂直方向のスクロール量を意味します。


- 負の値を使用すると、スクロールアップができます

(例: `window.scrollBy(0, -100)`)。



---



### ページの最下部までスクロールする


ページ全体をスクロールしたい場合、

以下のように最下部までスクロールできます。



```python

# ページの最下部までスクロール

driver.execute_script(

"window.scrollTo(0, document.body.scrollHeight);")


```


- `document.body.scrollHeight` は

ページ全体の高さを取得します。

- 最下部まで一気にスクロールします。


---


### 動的にコンテンツが読み込まれる場合


- 動的にコンテンツがロードされるページ 

(例: ソーシャルメディアのフィード) では、

一定間隔でスクロールして新しいコンテンツをロードさせることが必要です。



- その場合、以下のようなループを使用します。


```python


last_height

 = driver.execute_script(

"return document.body.scrollHeight")


while True:


    # ページの最下部までスクロール

    driver.execute_script(

"window.scrollTo(0, document.body.scrollHeight);")

    time.sleep(2)  # ロードを待つ (任意の秒数に調整)

    

    # 新しい高さを取得

    new_height

= driver.execute_script(

"return document.body.scrollHeight")

    if new_height == last_height:

        break  # 高さが変わらない場合は終了

    last_height = new_height

```


### まとめ

- `window.scrollBy(x, y)` を使えば

ピクセル単位でのスクロールが可能。


- `window.scrollTo(

0, document.body.scrollHeight)` 

を使えば最下部までスクロール。



- 動的ロード対応にはループと

 

`scrollHeight` を組み合わせると効果的です。


コメント