Python selenium 庫

Selenium 是一個用于自動化 Web 瀏覽器操作的強大工具,廣泛應用于 Web 應用程序測試、網頁數據抓取和任務自動化等場景。

Selenium 為各種編程語言提供了 API,用作測試。 目前的官方 API 文檔有 C#、JavaScript、Java、Python、Ruby。


安裝 Selenium 和 WebDriver

安裝 Selenium

要開始使用 Selenium,首先需要安裝 selenium 庫,并下載適用于你瀏覽器的 WebDriver。

使用 pip 安裝 Selenium:

pip install selenium

安裝完成后,可以使用以下命令查看 selenium 的版本信息:

pip show selenium

也可以使用 Python 代碼查看:

import selenium
print(selenium.__version__)

下載WebDriver

Selenium 需要一個 WebDriver 來與瀏覽器進行交互。

不同的瀏覽器需要不同的 WebDriver,例如 Chrome 瀏覽器需要 ChromeDriver,你需要根據你使用的瀏覽器下載相應的 WebDriver,并確保它在你的系統 PATH 中。

  • Chrome: ChromeDriver
  • Firefox: GeckoDriver
  • Edge: EdgeDriver
  • Safari: SafariDriver

選擇瀏覽器并初始化 WebDriver:

實例

from selenium import webdriver

# 使用 Chrome 瀏覽器
driver = webdriver.Chrome(executable_path=‘/path/to/chromedriver’)

# 或者使用 Firefox 瀏覽器
# driver = webdriver.Firefox(executable_path=‘/path/to/geckodriver’)

# 或者使用 Edge 瀏覽器
# driver = webdriver.Edge(executable_path=‘/path/to/msedgedriver’)

從 Selenium 4 開始,在瀏覽器驅動的管理方式上發生了變化:Selenium 4 嘗試自動檢測系統中安裝的瀏覽器版本,并下載相應的驅動程序,這意味著用戶不再需要手動下載和設置驅動程序路徑,除非他們需要特定版本的驅動程序。

實例

from selenium import webdriver

driver = webdriver.Chrome() # 如果使用其他瀏覽器,如 Firefox,需要相應修改

當國內的網絡環境,自動檢測下載驅動需要不一樣的網絡環境,所以建議手動下載驅動,然后指定驅動路徑。

在 Selenium 4 中,不再直接在 webdriver.Chrome 中設置驅動程序路徑,而是通過引入 Service 對象來設置。這樣可以避免棄用警告,并確保驅動程序的正確加載。例如:

實例

from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService

service = ChromeService(executable_path=“PATH_TO_DRIVER”)
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)

以下代碼指定驅動文件路徑來獲取網頁標題:

實例

from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService

# 設置正確的驅動路徑
service = ChromeService(executable_path=“/RUNOOB/Downloads/chromedriver-mac-arm64/chromedriver”)
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)

# 打開一個網站
driver.get(“https://cn.bing.com”)

# 獲取頁面標題
print(driver.title)

# 關閉瀏覽器
driver.quit()


基本用法

初始化 WebDriver

選擇瀏覽器并初始化 WebDriver:

實例

from selenium import webdriver

# 使用 Chrome 瀏覽器
driver = webdriver.Chrome()

# 或者使用 Firefox 瀏覽器
# driver = webdriver.Firefox()

# 或者使用 Edge 瀏覽器
# driver = webdriver.Edge()

打開網頁

使用 get() 方法打開網頁:

driver.get("https://www.baidu.com")

查找頁面元素

可以通過多種方式查找頁面元素,例如使用 ID、類名、標簽名等:

實例

# 通過 ID 查找元素
search_box = driver.find_element(“id”, “kw”)

# 通過類名查找元素
search_button = driver.find_element(“class name”, “s_ipt”)

# 通過標簽名查找元素
links = driver.find_elements(“tag name”, “a”)

模擬用戶操作

Selenium 可以模擬用戶在瀏覽器中的操作,例如點擊、輸入文本等:

實例

# 在搜索框中輸入文本
search_box.send_keys(“Selenium Python”)

# 點擊搜索按鈕
search_button.click()

獲取元素屬性和文本

可以獲取頁面元素的屬性值或文本內容:

實例

# 獲取元素的文本
element_text = search_box.text

# 獲取元素的屬性值
element_attribute = search_box.get_attribute(“placeholder”)

等待

有時頁面加載需要時間,可以使用顯式等待或隱式等待來確保元素可操作:

實例

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 顯式等待
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, “kw”))
)

# 隱式等待
driver.implicitly_wait(10)

關閉瀏覽器

操作完成后,記得關閉瀏覽器:

driver.quit()

簡單的網頁自動化

下面是一個簡單的 Selenium 項目示例,用于自動化搜索關鍵詞,并獲取結果頁面的標題。

實例

from selenium import webdriver
from selenium.webdriver.common.by import By # 導入 By 模塊
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 設置驅動的路徑,啟動瀏覽器
service = ChromeService(executable_path=“/RUNOOB/Downloads/chromedriver-mac-arm64/chromedriver”)
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)

try:
# 打開百度首頁
driver.get(“https://www.baidu.com”)

\# 查找搜索框元素  
search\_box \= driver.find\_element(By.ID, "kw")\# 輸入搜索內容  
search\_box.send\_keys("Selenium Python")\# 提交搜索表單  
search\_box.send\_keys(Keys.RETURN)\# 等待搜索結果加載  
WebDriverWait(driver, 10).until(  EC.presence\_of\_element\_located((By.ID, "content\_left"))  
)\# 打印頁面標題  
print("頁面標題是:", driver.title)

finally:
# 關閉瀏覽器
driver.quit()


selenium 常用方法

下表列出了 selenium 庫的常用方法:

方法說明示例代碼
webdriver.Chrome()初始化 Chrome 瀏覽器實例。driver = webdriver.Chrome()
driver.get(url)訪問指定的 URL 地址。driver.get("https://example.com")
driver.find_element(By, value)查找第一個匹配的元素。element = driver.find_element(By.ID, "id")
driver.find_elements(By, value)查找所有匹配的元素。elements = driver.find_elements(By.CLASS_NAME, "class")
element.click()點擊元素。element.click()
element.send_keys(value)向輸入框中發送鍵盤輸入。element.send_keys("text")
element.text獲取元素的文本內容。text = element.text
driver.back()瀏覽器后退。driver.back()
driver.forward()瀏覽器前進。driver.forward()
driver.refresh()刷新當前頁面。driver.refresh()
driver.execute_script(script, *args)執行 JavaScript 腳本。driver.execute_script("alert('Hello!')")
driver.switch_to.frame(frame_reference)切換到指定的 iframe。driver.switch_to.frame("frame_id")
driver.switch_to.default_content()切換回主文檔。driver.switch_to.default_content()
driver.quit()關閉瀏覽器并退出驅動。driver.quit()
driver.close()關閉當前窗口。driver.close()

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/70548.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/70548.shtml
英文地址,請注明出處:http://en.pswp.cn/web/70548.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

vllm部署LLM(qwen2.5,llama,deepseek)

目錄 環境 qwen2.5-1.5b-instruct 模型下載 vllm 安裝 驗證安裝 vllm 啟動 查看當前模型列表 OpenAI Completions API(文本生成) OpenAI Chat Completions API(chat 對話) vllm 進程查看,kill llama3 deep…

Python NumPy庫使用指南:從入門到精通

1. 引言 NumPy(Numerical Python)是 Python 中用于科學計算的核心庫之一。它提供了強大的多維數組對象(ndarray),以及一系列高效的數學函數,能夠輕松處理大規模的數值數據。NumPy 是許多其他科學計算庫(如 Pandas、Matplotlib、Scikit-learn 等)的基礎。 本文將詳細介…

15.2 智能銷售顧問系統技術架構解密:構建企業級知識驅動型對話引擎

智能銷售顧問系統技術架構解密:構建企業級知識驅動型對話引擎 關鍵詞:RAG 架構設計、銷售知識庫系統、LoRA 微調優化、多模態交互引擎、高并發服務部署 1. 系統技術架構全景解析 1.1 核心架構設計圖 #mermaid-svg-UBkTgaR5lf5WfGMa {font-family:"trebuchet ms",…

用PyTorch從零構建 DeepSeek R1:模型架構和分步訓練詳解

DeepSeek R1 的完整訓練流程核心在于,在其基礎模型 DeepSeek V3 之上,運用了多種強化學習策略。 本文將從一個可本地運行的基礎模型起步,并參照其技術報告,完全從零開始構建 DeepSeek R1,理論結合實踐,逐步…

爬蟲基礎入門之爬取豆瓣電影Top250-Re正則的使用

網址:豆瓣電影 Top 250 本案例所需要的模塊 requests (用于發送HTTP請求)re (用于字符串匹配和操作) 確定需要爬取的數據 : 電影的名稱電影的年份電影的評分電影評論人數 一. 發送請求 模擬瀏覽器向服務器發送請求 準備工作 -分析頁面: F12 or 右擊點擊檢查 查看…

力扣hot100——島嶼數量 島嶼問題經典dfs總結

給你一個由 1(陸地)和 0(水)組成的的二維網格,請你計算網格中島嶼的數量。 島嶼總是被水包圍,并且每座島嶼只能由水平方向和/或豎直方向上相鄰的陸地連接形成。 此外,你可以假設該網格的四條邊…

FPGA DSP:Vivado 中帶有 DDS 的 FIR 濾波器

本文使用 DDS 生成三個信號,并在 Vivado 中實現低通濾波器。低通濾波器將濾除相關信號。 介紹 用DDS生成三個信號,并在Vivado中實現低通濾波器。低通濾波器將濾除較快的信號。 本文分為幾個主要部分: 信號生成:展示如何使用DDS&am…

MessageAuthenticator

MessageAuthenticator https://coova.github.io/JRadius/ https://coova.github.io/JRadius/ import org.tinyradius.packet.RadiusPacket; import org.tinyradius.util.RadiusUtil; import java.nio.charset.StandardCharsets;public class RadiusAuthUtils {/*** 生成 RADI…

Spring Boot嵌入式服務器深度解析:從配置到調優的全方位指南

文章目錄 引言一、嵌入式服務器核心原理1.1 架構設計特點1.2 主流服務器對比 二、嵌入式服務器配置實戰2.1 基礎配置模板2.2 HTTPS安全配置 三、高級調優策略3.1 線程池優化(Tomcat示例)3.2 響應壓縮配置3.3 訪問日志配置 四、服務器切換實戰4.1 切換至U…

基于CentOS7安裝kubesphere和Kubernetes并接入外部ES收集日志

一、修改所有節點主機名 主節點就修改成master hostnamectl set-hostname master 然后輸入bash刷新當前主機名 工作節點1就修改成node1 hostnamectl set-hostname node1 然后輸入bash刷新當前主機名 二、全部節點安裝依賴并同步時間 yum -y install socat conntrack ebta…

探索與Cursor協作創建一個完整的前后端分離的項目的最佳實踐

探索與Cursor協作創建一個完整的前后端分離的項目的最佳實踐 Cursor簡介 Cursor在目前代表了AI編程技術的頂峰。在一定程度上可以說是當今AI時代的最強生產力代表。為此,不惜重金開了年費會員來緊跟時代步伐。當然cline、roo code、trae等開源或者免費產品也在緊追不舍。 C…

支持向量機(SVM)在 NLP 中的使用場景

支持向量機(Support Vector Machine, SVM)是一種強大的監督學習算法,廣泛應用于分類任務中。由于其出色的分類性能和高效的計算特點,SVM 已經成為自然語言處理(NLP)領域中的一種經典模型。SVM 在 NLP 中的應用非常廣泛,尤其在文本分類任務中,表現出色。 本文將探討 SV…

nodejs:vue 3 + vite 作為前端,將 html 填入<iframe>,在線查詢英漢詞典

向 doubao.com/chat/ 提問: node.js js-mdict 作為后端,vue 3 vite 作為前端,編寫在線查詢英漢詞典 后端部分(express js-mdict ) 詳見上一篇:nodejs:express js-mdict 作為后端&#xff…

Jenkins 部署在 Mac 并在局域網內通過 ip 訪問

Jenkins 部署在 Mac 并在局域網內通過 ip 訪問 一、修改配置文件 打開文件 ~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist 打開文件 /usr/local/opt/jenkins/homebrew.mxcl.jenkins.plist 兩個文件目錄不同&#xff0c;內容一樣 <?xml version"1.0" e…

2通道12bit 10G USB高速示波器采集卡

概述 USB高速示波器采集卡 2通道&#xff0c;12位&#xff0c;10GSa/s 采樣率 DC~2.5GHz 帶寬 USB高速示波器采集卡是一款高速12bit多通道USB數字化儀它具有2通道10GSa/s采樣率&#xff0c;模擬前端帶寬從DC到2.5GHz&#xff0c;板載32GB DDR4存儲&#xff0c;使其能夠滿足長…

Python|OpenCV-實現人物眨眼檢測(21)

前言 本文是該專欄的第23篇,后面將持續分享OpenCV計算機視覺的干貨知識,記得關注。 通過OpenCV庫來實現人物的眨眼檢測,首先是需要了解眨眼檢測的基本原理。一般來說,是需要通過檢測眼睛的狀態,比如眼睛是否閉合來判斷是否眨眼。對此,如果基于OpenCV,通過Python如何去實…

Qt | Excel創建、打開、讀寫、另存和關閉

01 如何在Qt中使用QXlsx庫進行Excel文件的讀寫操作,包括創建新Excel、寫入數據、讀取數據以及文件保存和釋放資源。通過實例展示了如何加載庫、編寫.h和.cpp文件,并演示了使用單元格引用和行列號進行數據操作的方法。 QXlsx是一個可以讀寫Excel文件的庫。不依賴office以及…

AMBA-CHI協議詳解(十九)

文章目錄 4.6 Silent cache state transitions4.7 Cache state transitions at a Requester4.7.1 Read request transactions4.7.2 Dataless request transactions4.7.3 Write request transactions4.7.4 Atomic transactions4.7.5 Other request transactions4.6 Silent cache…

常見的“鎖”有哪些?

悲觀鎖 悲觀鎖認為在并發環境中&#xff0c;數據隨時可能被其他線程修改&#xff0c;因此在訪問數據之前會先加鎖&#xff0c;以防止其他線程對數據進行修改。常見的悲觀鎖實現有&#xff1a; 1.互斥鎖 原理&#xff1a;互斥鎖是一種最基本的鎖類型&#xff0c;同一時間只允…

深入理解 Python 作用域:從基礎到高級應用

在 Python 編程中&#xff0c;作用域是一個至關重要的概念&#xff0c;它決定了變量和函數的可見性與生命周期。正確理解和運用作用域規則&#xff0c;對于編寫結構清晰、易于維護的代碼起著關鍵作用。無論是簡單的腳本還是復雜的大型項目&#xff0c;作用域都貫穿其中&#xf…