使用 Python Selenium 向下滾動網站

Fariba Laiq 2023年1月30日 2022年5月26日
  1. 安裝 Selenium 和 Chrome WebDriver
  2. 使用 Python Selenium 向下滾動網站
使用 Python Selenium 向下滾動網站

有時我們可能希望在瀏覽器中自動執行任務,例如在網站上滾動。Python 有一個強大的 Web 自動化工具,稱為 Selenium。

它控制網路瀏覽器並允許我們自動執行特定操作。我們可以編寫一個在網站上自動水平和垂直滾動的指令碼。

安裝 Selenium 和 Chrome WebDriver

要安裝 Selenium,我們使用以下命令。

#Python 3.x
pip install selenium

ChromeDriver 是 Selenium WebDriver 用來與 Chrome 互動的另一個可執行檔案。如果我們想在 Chrome 網路瀏覽器上自動執行任務,我們還需要安裝 ChromeDriver。

根據 Chrome 瀏覽器的版本,我們需要為其選擇相容的驅動程式。以下是安裝和配置 Chrome 驅動程式的步驟:

  1. 點選這個連結。根據你的 Chrome 瀏覽器版本和作業系統型別下載 Chrome 驅動程式。
  2. 如果要查詢 Chrome 瀏覽器的版本,點選 Chrome 右上角的三個點,點選幫助,選擇關於谷歌瀏覽器。你可以在 about 部分檢視 Chrome 版本。
  3. 解壓 zip 檔案並執行 Chrome 驅動程式。

使用 Python Selenium 向下滾動網站

語法:

driver.execute_script("window.scrollBy(x_pixels, y_pixels);")

這裡,x_pixels 表示水平滾動的畫素數(在 x 軸上),y_pixels 表示垂直滾動的畫素數(在 y 軸上)。在本指南中,我們僅垂直滾動以使 x_pixels 為 0。

按指定畫素向下滾動

我們在以下程式碼中建立了 WebDriver 例項,並指定了 Chrome 驅動程式的路徑。然後我們使用 get() 方法將目標網站的 URL 設定為驅動程式例項。

它將在所需的瀏覽器中開啟目標網站。我們使用 maximize_window() 最大化了 Chrome 的視窗以獲得更好的圖片。

Selenium 具有通過 execute_script() 方法執行 JavaScript 命令的功能。我們使用 window.scrollBy() 方法自動向下滾動 1000 畫素,並將此命令傳遞給 JavaScript 執行器。

該網站將自動垂直向下滾動 1000 畫素。

示例程式碼:

#Python 3.x
from selenium import webdriver
driver = webdriver.Chrome(r"E:\download\chromedriver.exe")
driver.get("https://www.verywellmind.com/what-is-personality-testing-2795420")
driver.maximize_window()
driver.execute_script("window.scrollBy(0, 1000);")

輸出:

Selenium 按畫素向下滾動

向下滾動到網站底部

假設我們要向下滾動到頁面的完整底部。document.body.scrollHeight 將給出頁面的總高度(以畫素為單位)。

我們將此高度指定為向下滾動的畫素數。

示例程式碼:

#Python 3.x
from selenium import webdriver
driver = webdriver.Chrome(r"E:\download\chromedriver.exe")
driver.get("https://www.verywellmind.com/what-is-personality-testing-2795420")
driver.maximize_window()
driver.execute_script("window.scrollBy(0, document.body.scrollHeight);")

輸出:

Selenium 向下滾動到底部

Author: Fariba Laiq
Fariba Laiq avatar Fariba Laiq avatar

I am Fariba Laiq from Pakistan. An android app developer, technical content writer, and coding instructor. Writing has always been one of my passions. I love to learn, implement and convey my knowledge to others.

LinkedIn

相關文章 - Python Selenium