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

大家好啊!我是NiJiMingCheng

这是我的博客:NiJiMingCheng

这节课我们来学习安装selenium和对应的各个浏览器驱动,个人比较喜欢使用谷歌浏览器驱动,所以接下来以谷歌浏览器来为大家做示例!!!
Selenium实战Python实现12306 抢票小助手(速通)


 

目录

1、安装

2、浏览器驱动下载

Chrome(google)浏览器驱动

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

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

4、驱动使用

5 、无头模式替换

Chrome 无头模式


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、驱动使用

Selenium实战-实现12306 抢票小助手(速通)

  • 验证浏览器驱动是否正常使用,确保 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)来模拟正常浏览器访问。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/934612.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

工具学习_Buildroot

0. 工具概述 Buildroot 是一个简单、高效且易于使用的工具,旨在通过交叉编译生成嵌入式 Linux 系统。它支持生成交叉编译工具链、根文件系统、内核镜像以及引导加载器。通过类似于内核配置的菜单界面(menuconfig、gconfig、xconfig)&#xf…

【机器人】系统辨识之激励轨迹设计(傅里叶级数)

在机器人参数辨识中使用傅里叶级数,主要是为了生成一种激励轨迹,具有良好的数学特性,同时符合物理要求。傅里叶级数的特性使其在机器人动力学辨识的激励轨迹设计中非常常用。 1. 为什么需要激励轨迹? 激励轨迹的作用是通过驱动机…

Unity简单操作及使用教程

Unity 是一款强大的跨平台游戏引擎,它不仅支持 2D 和 3D 游戏的开发,还可以用于虚拟现实 (VR)、增强现实 (AR)、动画、建筑可视化等多个领域。Unity 提供了完整的开发环境,具有丰富的功能、工具和资源,可以帮助开发者快速实现创意…

前端node环境安装:nvm安装详细教程(安装nvm、node、npm、cnpm、yarn及环境变量配置)

需求:在做前端开发的时候,有的时候 这个项目需要 node 14 那个项目需要 node 16,我们也不能卸载 安装 。这岂不是很麻烦。这个时候 就需要 一个工具 来管理我们的 node 版本和 npm 版本。 下面就分享一个 nvm 工具 用来管理 node 版本。 这个…

为什么数据平台需要敏捷版|直播回顾

11月28日,我们邀请到StartDT合伙人、CTO地雷和StartDT资深战略咨询专家何夕,围绕“为什么数据平台需要敏捷版”这个话题,向大家汇报了DataSimba敏捷版这半年来的最新进展,并带来了详细的产品解读。 敏捷版支持StarRocks、ClickHo…

HarmonyOS-中级(四)

文章目录 Native适配开发三方库的基本使用 🏡作者主页:点击! 🤖HarmonyOS专栏:点击! ⏰️创作时间:2024年12月09日11点12分 Native适配开发 Node-API HarmonyOS Node-API 是 HarmonyOS 提供的…

从零开始的使用SpringBoot和WebSocket打造实时共享文档应用

在现代应用中,实时协作已经成为了非常重要的功能,尤其是在文档编辑、聊天系统和在线编程等场景中。通过实时共享文档,多个用户可以同时对同一份文档进行编辑,并能看到其他人的编辑内容。这种功能广泛应用于 Google Docs、Notion 等…

统信桌面专业版部署postgresql-14.2+postgis-3.2方法介绍

文章来源:统信桌面专业版部署postgresql-14.2postgis-3.2方法介绍 | 统信软件-知识分享平台 应用场景 CPU架构:X86(海光C86-3G 3350) OS版本信息:1070桌面专业版 软件信息:postgresql-14.2postgis-3.2 …

jmeter 提取数据写入文件

BeanShell PostProcessor FileWriter file new FileWriter("E:\\IOT\\cui家庭中心\\v3.8.0\\123.txt",true); BufferedWriter out new BufferedWriter(file); out.write(vars.get("localKey")"\n"); log.info("到这里了吗"); out.c…

在ensp中ACL路由控制实验

一、实验目的 掌握ACL路由控制管理 二、实验要求 要求: 配置路由策略,左右两边不公开区域对方不可达,其他区域可以互相ping通 设备: 1、三台路由器 2、四台交换机 3、四台电脑 4、四台服务器 使用ensp搭建实验环境,如图所…

MySQL 实现分库分表详解

MySQL 实现分库分表详解 为什么要分库分表什么是分库分表分库分表的几种方式垂直拆分数据库垂直拆分表垂直拆分垂直拆分特点垂直拆分优缺点优点缺点 水平拆分数据库水平拆分表水平拆分水平拆分的其他方式水平拆分特点水平拆分优缺点优点缺点 分库分表带来的问题分库分表技术如何…

如何让Google快速收录你的页面?

要让Google更快地收录你的网站内容,首先需要理解“爬虫”这个概念。Google的爬虫是帮助它发现和评估网站内容质量的工具,如果你的页面质量高且更新频率稳定,那么Google爬虫更可能频繁光顾。通常情况下,通过Google Search Console&…

游戏引擎学习第36天

仓库 :https://gitee.com/mrxiao_com/2d_game 回顾之前的内容 在这个程序中,目标是通过手动编写代码来从头开始制作一个完整的游戏。整个过程不使用任何库或现成的游戏引擎,这样做的目的是为了能够全面了解游戏执行的每一个细节。开发过程中&#xff0…

【Linux】系统信息和状态命令

步骤 1:显示系统信息 命令: uname -a 1.打开终端。 2.输入命令并按回车键。 3.观察:输出将显示包括内核版本、主机名、硬件架构等在内的系统信息。 步骤 2:显示或设置系统的主机名 命令: hostname 1.打开终端。…

IDEA创建Spring Boot项目配置阿里云Spring Initializr Server URL【详细教程-轻松学会】

1.首先打开idea选择新建项目 2.选择Spring Boot框架(就是选择Spring Initializr这个) 3.点击中间界面Server URL后面的三个点更换为阿里云的Server URL Idea中默认的Server URL地址:https://start.spring.io/ 修改为阿里云Server URL地址:https://star…

获得日志记录之外的新视角:应用程序性能监控简介(APM)

作者:来自 Elastic David Hope 日志记录领域即将发生改变。在这篇文章中,我们将概述从单纯的日志记录到包含日志、跟踪和 APM 的完全集成解决方案的推荐流程。 通过 APM 和跟踪优先考虑客户体验 企业软件开发和运营已成为一个有趣的领域。我们拥有一些非…

Qt之第三方库‌QXlsx使用(三)

Qt开发 系列文章 - QXlsx(三) 目录 前言 一、Qt开源库 二、QXlsx 1.QXlsx介绍 2.QXlsx下载 3.QXlsx移植 4.修改项目文件.pro 三、使用技巧 1.添加头文件 2.写入数据 3.读出数据 总结 前言 Qt第三方控件库是指非Qt官方提供的、用于扩展Qt应用…

Codeforces Round 992 (Div. 2)

传送门:Dashboard - Codeforces Round 992 (Div. 2) - Codeforces A. Game of Division 思路:模拟 AC代码:Submission #295676347 - Codeforces B. Paint a Strip 思路:数学 贪心 放置的位置一定是 1 4 10 22 48 ....…

MySQL并发控制(二):锁

只改一行语句,为什么锁那么多 注1:MySQL后面的版本可能会改变加锁策略, 所以这个规则只限于截止到现在的最新版本, 即5.x系列 注2:因为间隙锁在可重复读隔离级别下才有效, 所以本篇文章接下来的描述&#…

ThinkPHP+Layui开发的ERP管理系统

ERP采购生产销售系统,一款基于ThinkPHPLayui开发的ERP管理系统,帮助中小企业实现ERP管理规范化,此系统能为你解决五大方面的经营问题:1.采购管理 2.销售管理 3.仓库管理 4.资金管理 5.生产管理,适用于:服装…