使用 Python Selenium 向下滚动网站

Fariba Laiq 2024年2月15日
  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 向下滚动到底部

作者: 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