mac python3.13 selenium安裝使用

一、安裝
# 進入虛擬環境
workon  xxxx 
pip install selenium
二、安裝驅動
  • 查詢自己瀏覽器版本
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --versionGoogle Chrome 138.0.7204.93
  • 下載對應的驅動,其他版本
sudo mv ~/Downloads/chromedriver /usr/local/bin/
sudo chmod +x /usr/local/bin/chromedriver# 查詢版本
chromedriver --version
ChromeDriver 138.0.7204.49 (d2b48fd5f7813ed477a2d68fa232b8178fa4fb1e-refs/branch-heads/7204@{#1814})
三、打開使用,第一次打開加載很久
from selenium import webdriver
from selenium.webdriver.common.by import By# 使用 Chrome
driver = webdriver.Chrome()  # 如果驅動在PATH中# 訪問網頁
driver.get("https://www.baidu.com")# 獲取頁面標題
title = driver.title
print(driver.title)driver.quit()   # 關閉所有窗口并退出驅動
四、優化加載,提高打開速度
from selenium import webdriver
from selenium.webdriver.chrome.options import Optionsoptions = Options()
options.add_argument("--no-sandbox")  # 禁用沙盒(安全性降低,但速度提升)
options.add_argument("--disable-dev-shm-usage")  # 避免共享內存問題
options.add_argument("--disable-extensions")  # 禁用擴展
options.add_argument("--disable-gpu")  # 禁用GPU加速(某些系統需要)
options.add_argument("--window-size=1920,1080")  # 固定窗口大小
options.add_argument("--user-data-dir=/tmp/chrome-test-profile")
# options.add_argument("--incognito")
# options.add_argument("--disable-software-rasterizer")  # 禁用軟件渲染
# options.add_argument("--disable-backgrounding-occluded-windows")driver = webdriver.Chrome(options=options)
五、獲取頁面請求數據
  • 通過 Chrome DevTools 捕獲網絡請求(僅限 Chrome/Edge)
import json
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options# 啟用 Chrome DevTools
chrome_options = Options()
chrome_options.add_argument("--enable-logging")
chrome_options.add_argument("--log-level=0")
chrome_options.set_capability("goog:loggingPrefs", {"performance": "ALL"})driver = webdriver.Chrome(options=chrome_options)# 開始監聽網絡請求
driver.execute_cdp_cmd("Network.enable", {})# 訪問目標頁面
driver.get("https://example.com")# 獲取所有網絡請求日志
logs = driver.get_log("performance")
for log in logs:print(log)  # 原始日志(JSON 格式)# 提取關鍵信息(如請求 URL、狀態碼)
for log in logs:message = log.get("message", '{}')message = json.loads(message)['message']method = messgae['method']params = messgae['params']if "Network.requestWillBeSent" in message:print("Request URL:", message.get("params", {}).get("request", {}).get("url"))elif "Network.responseReceived" in message:print("Status Code:", message.get("params", {}).get("response", {}).get("status"))# 關閉瀏覽器
driver.quit()
六、常用命令
  • 瀏覽器操作
# 前進和后退
driver.forward()
driver.back()# 刷新頁面
driver.refresh()# 獲取當前URL
current_url = driver.current_url# 獲取頁面標題
title = driver.title# 獲取頁面源代碼
source = driver.page_source# 關閉瀏覽器
driver.close()  # 關閉當前窗口
driver.quit()   # 關閉所有窗口并退出驅動
  • 文件上傳
# 找到文件上傳input元素
upload_element = driver.find_element(By.XPATH, "//input[@type='file']")# 發送文件路徑
upload_element.send_keys("/path/to/file.txt")# 圖片
driver.get("https://image.baidu.com/")
driver.find_element(By.XPATH, '//*[@id="sttb"]/img[1]').click()
driver.find_element(By.ID, "stfile").send_keys("/path/to/image.png")
  • 窗口和標簽頁操作
# 獲取當前窗口句柄
current_window = driver.current_window_handle# 獲取所有窗口句柄
all_windows = driver.window_handles# 切換到新窗口
for window in all_windows:if window != current_window:driver.switch_to.window(window)# 打開新標簽頁
driver.execute_script("window.open('');")# 切換回原窗口
driver.switch_to.window(current_window)# 設置窗口大小
driver.set_window_size(1024, 768)# 最大化窗口
driver.maximize_window()
七、cookies管理
  • 獲取所有 cookies
from selenium import webdriverdriver = webdriver.Chrome()
driver.get("https://example.com")# 獲取當前頁面的所有cookies
all_cookies = driver.get_cookies()
print(all_cookies)
  • 添加 Cookies
cookie = {'name': 'test_cookie','value': '12345','domain': 'example.com','path': '/','secure': True
}driver.add_cookie(cookie)
  • 刪除cookie
# 刪除特定 cookie
driver.delete_cookie("cookie_name")# 刪除所有 cookies
driver.delete_all_cookies()
  • 使用 Cookies 保持登錄狀態
# 第一次登錄并保存cookies
driver.get("https://example.com/login")
# 執行登錄操作...
cookies = driver.get_cookies()# 關閉瀏覽器后重新打開
driver.quit()
driver = webdriver.Chrome()# 先訪問網站再添加cookies
driver.get("https://example.com")
for cookie in cookies:driver.add_cookie(cookie)# 刷新頁面,現在應該已登錄
driver.refresh()

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

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

相關文章

AI 開發平臺:中小企業的創新破局點在哪里?

在浙江義烏的一個小商品加工廠里,老板王建國最近有點煩。訂單量忽高忽低,原材料價格波動不定,他想通過數據分析提前規劃生產,卻苦于沒有專業的技術團隊;在廣東東莞的一家電子配件公司,業務員李娜每天要處理…

.NET 8.0 Redis 教程

一、環境準備 1. 安裝 Redis 服務器 Windows/macOS/Linux:使用 Docker 快速部署 bash docker run -d --name redis -p 6379:6379 redisLinux:直接安裝 bash sudo apt-get install redis-server sudo systemctl start redis-server2. 創建 .NET 項目 b…

2025年游戲鼠標推薦,游戲鼠標推薦,打CSGO(羅技、雷蛇、卓威、ROG、漫步者、賽睿、達爾優)

可能很多人對于游戲鼠標的了解還是不夠深,會有很多疑問,比如:“游戲鼠標和辦公鼠標的區別”、“游戲鼠標無線好還是有線好”等等一系列的問題,本文將會介紹游戲鼠標領域處于領先地位的幾個廠家:羅技鼠標、雷蛇鼠標、賽…

OpenCV CUDA模塊設備層-----在 GPU上高效地執行兩個uint類型值的最小值比較函數vmin2()

操作系統:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 編程語言:C11 算法描述 OpenCV 的CUDA模塊(cudev) 中的一個設備端內聯函數,用于在GPU上高效地執行兩個uint類型值的最小值比較。 該函…

Web3與傳統網絡安全模型對比:關鍵差異解析

隨著互聯網技術的飛速發展,Web3的概念逐漸成為人們關注的焦點。Web3代表著一個更加去中心化、安全和用戶友好的網絡環境。與傳統的網絡安全模型相比,Web3在多個方面展現出了其獨特的優勢和特點。本文將深入探討Web3與傳統網絡安全模型之間的關鍵差異。 …

FLAN:微調語言模型是 Zero-Shot 學習者

摘要 本文探討了一種簡單的方法來提升語言模型的零樣本學習能力。我們展示了指令微調——即在通過指令描述的數據集集合上對語言模型進行微調——能夠顯著提升模型在未見任務上的零樣本表現。 我們以一個擁有1370億參數的預訓練語言模型為基礎,在60多個通過自然語…

springboot中的事件發布和監聽

事件定義 創建一個自定義事件類 UserLoginEvent,繼承 ApplicationEvent,用于攜帶用戶登錄信息: import org.springframework.context.ApplicationEvent;public class UserLoginEvent extends ApplicationEvent { //關鍵點1:ext…

“開源雙軌架構+40億參數擴散Transformer——ComfyUI-OmniGen2本地部署教程:重塑多模態生成的效率邊界!

一、簡介 OmniGen2 是由北京智源研究院最新推出的一個強大、高效的開源多模態生成模型。與 OmniGen v1 不同,OmniGen2 具有兩種不同的文本和圖像模態解碼路徑,利用非共享參數和解耦的圖像分詞器。OmniGen2 在四個主要功能方面具有競爭力的性能&#xff…

Java的SpringAI+Deepseek大模型實戰之會話記憶

文章目錄 背景項目環境實現步驟第一步、定義會話存儲方式方式一、定義記憶存儲ChatMemory方式二、注入記憶存儲ChatMemory 第二步、配置會話記憶方式一、老版本實現方式二、新版本實現 第三步、存儲會話信息 異常處理1、InMemoryChatMemory 無法解析 背景 前兩期【環境搭建】和…

RDS MySQL vs. Aurora MySQL:高需求工作負載的終極遷移指南

在 AWS 上,開發團隊最常見且關鍵的決策之一就是選擇合適的關系型數據庫。通常,討論會從 RDS for MySQL 這個可靠且熟悉的“老黃牛”開始。但很快,就會有人提到一個更強大、更云原生的選項:Aurora MySQL。 也許,就像最…

使用倉頡編程語言是一種怎樣的體驗?

2024年6月21日下午,華為終端BG軟件部總裁龔體先生在華為開發者大會主題演講《鴻蒙原生應用,全新出發!》中向全球開發者介紹了華為自研倉頡編程語言,并發布了HarmonyOS NEXT倉頡語言開發者預覽版。這是華為首次公開倉頡編程語言。 …

Qt Creator自定義控件開發流程

Qt Creator自定義控件開發流程 在 Qt 5.9 Creator 中開發自定義控件的完整流程如下,分為設計、實現、集成和測試四個階段: 1. 創建自定義控件類 (1) 新建類文件 右鍵項目 → 添加新文件 → C Class基類選擇 QWidget 或現有控件(如 QPushBu…

翻譯《The Old New Thing》- 如何創建一個與屏幕大小相同的窗口,而不會被當作全屏窗口處理?

How can I create a window the size of the screen without it being treated as a fullscreen window? - The Old New Thinghttps://devblogs.microsoft.com/oldnewthing/20250522-00/?p111211 問題描述 任務欄允許全屏窗口覆蓋它。這樣,當你在放映幻燈片或進行…

深分頁末日救星:MySQL延遲關聯原理與實戰手冊

MySQL 深分頁(如 LIMIT 100000, 10)本質是 高代價的偏移量掃描,可通過以下方案優化,附核心原理和實操示例: 一、深分頁為什么慢? SELECT * FROM orders ORDER BY id DESC LIMIT 100000, 10; 執行過程&…

前端技術棧 —— HTML、CSS和JavaScirpt執行環境

以下內容由GLM回答生成,不保證正確性。 前端技術棧 —— HTML、CSS和JavaScirpt執行環境 JavaScript 的執行環境HTML 和 CSS 的執行環境HTML 和 CSS 是否可以在其他環境中執行?總結 JavaScript 是一種 解釋型語言,但它也可以被編譯。JavaScr…

多項式帶余除法——線性代數題目為例

一、多項式帶余除法的定義 二、例題 使用方法將在例題中展示:

學習日記-spring-day40-7.3

知識點: 1.自動裝配Resource(3) 知識點 核心內容 重點 Autowired與Resource注入規則 默認注入邏輯:未指定參數時,Resource優先按屬性名匹配(by name),失敗后按類型匹配&#xf…

重新認識JNIEnv

引言 拋開一堆概念,我們從本質出發。 java 調用c 我們開發移動端或者后端服務 ,都是用的java 或者kotlin 語言。有時候我們需要用c的一些庫(ocr識別/導航的算法/ 等) 因為一些跟硬件相關的接口或者系統的api 都是c寫的。 C調用J…

人工智能訓練師——智能語音識別ASR

人機對話——ASR 概念 ASR(Automatic Speech Recognition,自動語音識別)是一種將人類語音轉換為文本的技術。它使得計算機能夠“聽”懂人類的語音指令或對話,并將其轉換成可讀、可編輯的文本形式。ASR技術是人機交互領域中的一個…

Compose 常用命令詳解——AI教你學Docker

3.3 Compose 常用命令詳解 Docker Compose 通過一系列命令高效管理多容器應用。理解這些命令,可以讓你靈活地啟動、停止、查看、調試、擴縮容和配置 Compose 項目。 一、核心命令詳解 1. docker compose up 功能:啟動并構建所有服務,生成網…