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

Python Selenium 各浏览器驱动下载与配置使用(详细流程)

1、安装

pip install selenium

2、浏览器驱动下载

Chrome(google)浏览器驱动
  1. 下载地址:http://chromedriver.storage.googleapis.com/index.html 或 https://sites.google.com/a/chromium.org/chromedriver/home
    下载地址:http://chromedriver.storage.googleapis.com/index.html 或 https://sites.google.com/a/chromium.org/chromedriver/home

  2. 下载地址 129 130 等版本:Chrome for Testing availability

Chrome浏览器驱动(chromedriver )最新版
Firefox浏览器驱动(geckodriver)
Edge浏览器驱动(MicrosoftWebDriver)
IE浏览器驱动(IEDriverServer)
Opera浏览器驱动(operadriver)
PhantomJS浏览器驱动(phantomjs),注意:这个无界面浏览器驱动已经不维护了,不推荐使用,selenium 后续版本也不用支持了。

3、下载浏览器驱动(webdriver)以谷歌浏览器为例

      根据自己的操作系统下载相对应的驱动,webdriver 需要和对应的浏览器版本以及 selenium 版本对应。
      例如当前电脑 Chrome 版本为 版本 131.0.6778.109(正式版本) (arm64),重点只需要看 131.0 后面的小版本号不需要管,打开 Chrome浏览器驱动(chromedriver ) 找到 131.0 开头的下载就行,选这个开头最新的那个。

        安装路径下载驱动后解压出来得到驱动可执行文件,不要运行,放到指定目录:

  • Windows:复制 webdriver 到 Python 安装路径的根目录下即可。
  • Mac:复制 webdriver 到 /usr/local/bin 或 /usr/bin 目录下,看有哪个目录。

        如果实在不清楚放哪里,但是想使用,那就随便找个文件夹一丢,通过自定义路径导入使用就行,比如项目根目录,直接通过路径访问驱动使用。

如下图我放入的位置

如有需要可以配置环境变量

4、驱动使用

  • 验证浏览器驱动是否正常使用,确保 python 环境正常,selenium 包已经安装。
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from time import sleep# 根据不同操作系统设置Chrome浏览器驱动路径,示例中仅给出了相对简单的示意,实际中可以根据需求更灵活判断
import platform
system = platform.system()
if system == "Windows":driver_path = 'chromedriver.exe'
elif system == "Darwin":  # Mac系统driver_path = 'chromedriver'
else:raise ValueError("不支持的操作系统")# Chrome浏览器配置选项,添加不自动关闭浏览器的实验性选项
chrome_options = webdriver.ChromeOptions()
chrome_options.add_experimental_option('detach', True)# 创建Service对象,用于传递给Chrome浏览器驱动
service = Service(driver_path)# 创建Chrome浏览器驱动对象
driver = webdriver.Chrome(service=service, options=chrome_options)# 如果要使用Firefox浏览器,取消下面这行注释即可
# driver = webdriver.Firefox()
# 如果要使用Edge浏览器,取消下面这行注释即可
# driver = webdriver.Edge()
# 如果要使用Internet Explorer浏览器,取消下面这行注释即可
# driver = webdriver.Ie()
# 如果要使用Opera浏览器,取消下面这行注释即可
# driver = webdriver.Opera()
# 如果要使用PhantomJS浏览器(注意它已停止维护,现在很少使用了),取消下面这行注释即可
# driver = webdriver.PhantomJS()# 打开指定网址
driver.get('https://www.baidu.com')
# 休眠5秒
sleep(5)
# 关闭浏览器驱动对象
driver.quit()

5 、无头模式替换

  1. Chrome 无头模式
    基本概念:无头模式是指浏览器在运行时没有可见的用户界面。在这种模式下,浏览器可以在后台执行各种任务,如网页抓取、自动化测试等,而不会弹出浏览器窗口,节省系统资源并提高效率。
    代码实现:首先需要导入selenium库和相关模块,如下:
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
  • 然后设置ChromeOptions来启用无头模式:
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
  • 接着,设置Chrome浏览器驱动路径(这里假设是在 Windows 系统下,路径为chromedriver.exe,你需要根据实际情况修改),并创建Service对象:
driver_path = 'chromedriver.exe'
service = Service(driver_path)
  • 最后,创建Chrome浏览器驱动对象并使用:
driver = webdriver.Chrome(service = service, options = chrome_options)
driver.get('https://www.baidu.com')
print(driver.page_source)
driver.quit()
  • 在上述代码中,--headless参数用于开启无头模式。通过driver.get方法访问网页后,可以使用driver.page_source获取网页的源代码,用于后续的分析,比如网页抓取等操作。
  1. Firefox 无头模式
    • 基本概念:同样是让 Firefox 浏览器在没有图形界面的情况下运行,适用于自动化任务和不需要可视化界面的场景。
    • 代码实现
      • 导入相关库:
from selenium import webdriver
from selenium.webdriver.firefox.service import Service
  • 设置FirefoxOptions来开启无头模式:
firefox_options = webdriver.FirefoxOptions()
firefox_options.add_argument('-headless')
  • 设置Firefox浏览器驱动路径(假设是geckodriver.exe,根据实际情况修改),并创建Service对象:
driver_path = 'geckodriver.exe'
service = Service(driver_path)
  • 创建Firefox浏览器驱动对象并使用:
driver = webdriver.Firefox(service = service, options = firefox_options)
driver.get('https://www.baidu.com')
print(driver.page_source)
driver.quit()
  • 在 Firefox 中,-headless参数开启无头模式。和 Chrome 无头模式类似,通过driver.get方法访问网页后,可以获取网页源代码进行后续操作。

使用无头模式时的注意事项:

  • 性能优化:虽然无头模式可以节省资源,但在大量并发请求等情况下,仍需要合理配置资源,如设置合适的请求频率,避免给服务器造成过大压力或被目标网站视为恶意爬虫而封禁。
  • 兼容性:部分网站可能会对无头浏览器进行检测并限制访问,这种情况下可能需要采取一些反检测措施,如设置合适的用户代理(User - Agent)来模拟正常浏览器访问。

相关文章:

Python Selenium 各浏览器驱动下载与配置使用(详细流程)

1、安装 pip install selenium 2、浏览器驱动下载 Chrome(google)浏览器驱动 下载地址:http://chromedriver.storage.googleapis.com/index.html 或 https://sites.google.com/a/chromium.org/chromedriver/home . 下载地址:http://chromedriver.stor…...

C语言期末考试——重点考点

目录 1.C语言的结构 2.三种循环结构 3.逻辑真假判断 4. printf函数 5. 强制类型转化 6. 多分支选择结构 7. 标识符的定义 8. 三目运算符 1.C语言的结构 选择结构、顺序结构、循环结构 2.三种循环结构 for、while、do-while 3.逻辑真假判断 C语言用0表示false,用非0(不…...

mongo开启慢日志及常用命令行操作、数据备份

mongo开启慢日志及常用命令行操作、数据备份 1.常用命令行操作2.mongo备份3.通过命令临时开启慢日志记录4.通过修改配置开启慢日志记录 1.常用命令行操作 连接命令行 格式:mongo -u用户名 -p密码 --host 主机地址 --port 端口号 库名; 如:连…...

Mybatis-Plus的主要API

一、实体类操作相关API BaseMapper<T>接口 功能&#xff1a;这是 MyBatis - Plus 为每个实体类对应的 Mapper 接口提供的基础接口。它提供了一系列基本的 CRUD&#xff08;增删改查&#xff09;操作方法。例如insert(T entity)方法用于插入一条记录&#xff0c;d…...

2023 年“泰迪杯”数据分析技能赛B 题企业财务数据分析与造假识别

2023 年“泰迪杯”数据分析技能赛B 题企业财务数据分析与造假识别 一、背景 财务数据是指企业经营活动和财务结果的数据记录&#xff0c;反映了企业的财务状况 与经营成果。对行业、企业的财务数据进行分析&#xff0c;就是要评价其过去的经营业绩、 衡量现在的财务状况、预测…...

【SpringMVC】参数传递 重定向与转发 REST风格

文章目录 参数传递重定向与转发REST风格 参数传递 ModelAndView&#xff1a;包含视图信息和模型数据信息 public ModelAndView index1(){// 返回页面ModelAndView modelAndView new ModelAndView("视图名");// 或// ModelAndView modelAndView new ModelAndView(…...

性能测试需求分析(超详细总结)

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 1、客户方提出 客户方能提出明确的性能需求&#xff0c;说明对方很重视性能测试&#xff0c;这样的企业一般是金融、电信、银行、医疗器械等&#xff1b;他们…...

显卡(Graphics Processing Unit,GPU)架构详细解读

显卡架构主要分为两大类&#xff1a;GPU 核心架构&#xff08;也称为图形处理单元架构&#xff09;和显卡的其他组件&#xff08;如内存、控制器、输出接口等&#xff09;。本篇文章将对显卡架构进行详细分析&#xff0c;重点介绍 GPU 核心架构、显卡计算单元、显存结构、显卡管…...

【大语言模型】ACL2024论文-24 图像化歧义:Winograd Schema 挑战的视觉转变

【大语言模型】ACL2024论文-24 图像化歧义&#xff1a;Winograd Schema 挑战的视觉转变 目录 文章目录 【大语言模型】ACL2024论文-24 图像化歧义&#xff1a;Winograd Schema 挑战的视觉转变目录摘要研究背景问题与挑战如何解决核心创新点算法模型实验效果&#xff08;包含重要…...

AcWing 2868. 子串分值

文章目录 前言代码思路 前言 还是实力不允许啊&#xff0c;要是实力允许我就一道一道中等题刷了。简单题真够呛。有些题看题解都是看老半天看不懂&#xff0c;假设是这种我是真感觉没必要钻研。我现在大三&#xff0c;要是看一遍题解看不懂就算了&#xff0c;果断放弃。真可以…...

如何进行 JavaScript 性能优化?

要进行 JavaScript 性能优化&#xff0c;我们可以从多个角度进行思考&#xff0c;主要包括减少页面渲染时间、减少内存占用、优化代码执行效率等。以下是优化的一些方法&#xff0c;并结合实际项目代码示例讲解。 目录结构 减少 DOM 操作 缓存 DOM 元素批量更新 DOM 优化 Jav…...

使用TCP编程实现简单登录功能

在Java中&#xff0c;使用TCP编程实现登录功能通常涉及以下步骤&#xff1a; 创建服务器端&#xff0c;监听特定端口&#xff0c;等待客户端连接。创建客户端&#xff0c;连接到服务器端。客户端发送用户名和密码到服务器端。服务器端验证用户名和密码。服务器端返回验证结果给…...

卷积神经网络(CNN)的层次结构

卷积神经网络&#xff08;CNN&#xff09;是一种以其处理图像和视频数据的能力而闻名的深度学习模型&#xff0c;其基本结构通常包括以下几个层次&#xff0c;每个层次都有其特定的功能和作用&#xff1a; 1. 输入层&#xff08;Input Layer&#xff09;&#xff1a; 卷积神经网…...

操作系统文件管理相关习题2

文件管理的任务和功能文件管理 任务&#xff1a;对用户文件和系统文件进行组织管理&#xff0c;以方便用户使用&#xff0c;并保证文件的安全 功能&#xff1a;文件存储空间的管理&#xff0c;目录管理&#xff0c;文件读写管理和保护 目录管理 对目录管理的要求 实现按名存…...

react 通过ref调用子组件的方法

背景 父组件内引入了一个弹窗组件&#xff0c;弹窗组件使用了完全内聚的开发方法&#xff1b; 实现思路 父组件内通过ref获取的子组件&#xff0c;通过current调用子组件的方法&#xff0c;子组件需要通过forwardRef进行“包装”导出&#xff0c;通过useImperativeHandle暴露…...

【计算机网络】 —— 数据链路层(壹)

文章目录 前言 一、概述 1. 基本概念 2. 数据链路层的三个主要问题 二、封装成帧 1. 概念 2. 帧头、帧尾的作用 3. 透明传输 4. 提高效率 三、差错检测 1. 概念 2. 奇偶校验 3. 循环冗余校验CRC 1. 步骤 2. 生成多项式 3. 例题 4. 总结 四、可靠传输 1. 基本…...

AcWing 93. 递归实现组合型枚举

文章目录 前言代码思路 前言 今天晚上还有三个小时&#xff0c;写一晚上简单题。划水。 代码 #include<bits/stdc.h> using namespace std; int n,m; void dfs(int u,int sum,int state){if(sumn-u<m){return;//sum 表示当前选了 sum 个数字&#xff0c;假设把所有…...

vscode 折叠范围快捷键

vscode 折叠范围快捷键 问答 原文网址:https://www.n.cn/search/c830b29cb76146d08cae5074acfd4785 VSCode 折叠范围快捷键 在使用Visual Studio Code&#xff08;VSCode&#xff09;进行代码编辑时&#xff0c;掌握一些快捷键可以大大提高工作效率。以下是关于VSCode中折叠和…...

RabbitMQ 实现分组消费满足服务器集群部署

实现思路 使用扇出交换机&#xff08;Fanout Exchange&#xff09;&#xff1a;扇出交换机会将消息广播到所有绑定的队列&#xff0c;确保每个消费者组都能接收到相同的消息。为每个消费者组创建独立的队列&#xff1a;每个消费者组拥有自己的队列&#xff0c;所有属于该组的消…...

Chromium网络调试篇-Fiddler 5.21.0 使用指南:捕获浏览器HTTP(S)流量(二)

概述 在上一篇文章中&#xff0c;我们介绍了Fiddler的基础功能和如何安装它。今天我们将深入探讨如何使用Fiddler来捕获HTTP请求&#xff0c;这是Fiddler的一个核心能力&#xff0c;对于前端开发者、测试人员以及安全研究人员来说非常有用。捕获HTTP请求可以帮助我们更好地理解…...

反向工程与模型迁移:打造未来商品详情API的可持续创新体系

在电商行业蓬勃发展的当下&#xff0c;商品详情API作为连接电商平台与开发者、商家及用户的关键纽带&#xff0c;其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息&#xff08;如名称、价格、库存等&#xff09;的获取与展示&#xff0c;已难以满足市场对个性化、智能…...

Oracle查询表空间大小

1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架&#xff0c;支持"一次开发&#xff0c;多端部署"&#xff0c;可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务&#xff0c;为旅游应用带来&#xf…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)

考察一般的三次多项式&#xff0c;以r为参数&#xff1a; p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]&#xff1b; 此多项式的根为&#xff1a; 尽管看起来这个多项式是特殊的&#xff0c;其实一般的三次多项式都是可以通过线性变换化为这个形式…...

day36-多路IO复用

一、基本概念 &#xff08;服务器多客户端模型&#xff09; 定义&#xff1a;单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用&#xff1a;应用程序通常需要处理来自多条事件流中的事件&#xff0c;比如我现在用的电脑&#xff0c;需要同时处理键盘鼠标…...

Qemu arm操作系统开发环境

使用qemu虚拟arm硬件比较合适。 步骤如下&#xff1a; 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载&#xff0c;下载地址&#xff1a;https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...

MySQL 主从同步异常处理

阅读原文&#xff1a;https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主&#xff0c;遇到的这个错误&#xff1a; Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一&#xff0c;通常表示&#xff…...

pycharm 设置环境出错

pycharm 设置环境出错 pycharm 新建项目&#xff0c;设置虚拟环境&#xff0c;出错 pycharm 出错 Cannot open Local Failed to start [powershell.exe, -NoExit, -ExecutionPolicy, Bypass, -File, C:\Program Files\JetBrains\PyCharm 2024.1.3\plugins\terminal\shell-int…...