当前位置: 首页 > news >正文

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.dtcms.com/a/263667.html

相关文章:

  • [特殊字符] 分享裂变新姿势:用 UniApp + Vue3 玩转小程序页面分享跳转!
  • IntelliJ IDEA 2025- 下载安装教程图文版详细教程(附激活码)
  • Python 库 包 nltk (Natural Language Toolkit)
  • 类加载生命周期与内存区域详解
  • 【FR801xH】富芮坤FR801xH之UART
  • npm list的使用方法详细介绍
  • 基于 Three.js 与 WebGL 的商场全景 VR 导航系统源码级解析
  • python 操作 hive
  • vue | 插件 | 移动文件的插件 —— move-file-cli 插件 的安装与使用
  • RabbitMQ - SpringAMQP及Work模型
  • C++仿函数与谓词深度解析:函数对象的艺术
  • android apk签名
  • 文件系统之配置网络参数
  • SiFli 52 UART的RX唤醒MCU怎么做
  • 飞算 JavaAI:我的编程强力助推引擎
  • Vue Vue-route (3)
  • Web性能测试常用指标(转自百度AI)
  • PHP爬虫实战指南:获取淘宝商品详情
  • 飞算 JavaAI 开发助手:深度学习驱动下的 Java 全链路智能开发新范式
  • 图神经网络(篇一)-GraphSage
  • CyclicBarrier(同步屏障)是什么?它的原理和用法是什么?
  • 新手向:从零开始Node.js超详细安装、配置与使用指南
  • Embeddings模型
  • 微服务介绍
  • Unity进阶课程【六】Android、ios、Pad 终端设备打包局域网IP调试、USB调试、性能检测、控制台打印日志等、C#
  • 【RTSP从零实践】4、使用RTP协议封装并传输AAC
  • 学习threejs,使用自定义GLSL 着色器,生成艺术作品
  • 电机参数测量
  • 自由学习记录(66)
  • JT808教程:消息的结构