Python爬虫之selenium库驱动浏览器

目录

一、简介

二、使用selenium库前的准备

1、了解selenium库驱动浏览器的原理

(1)、WebDriver 协议

(2)、 浏览器驱动(Browser Driver)

(3)、 Selenium 客户端库

(4)、 工作流程

(5)、 跨浏览器支持

(6)、 自动化测试

2、安装WebDriver

 安装步骤(以谷歌浏览器为例)

(1)、查看自己的浏览器版本

 (2)、进入chromedriver下载地址

(3)、 把解压后的Chromedriver.exe文件拷贝到python安装目录的Scripts目录下

3、安装selenium库

(1)、在命令提示符窗口或终端执行以下的命令

(2)、安装完成后使用以下命令查看库的信息

三、使用selenium驱动浏览器

四、总结


一、简介

selenium库是一种用于用于Web应用程序测试的工具,它可以驱动浏览器执行特定操作,自动按照脚本代码做出单击、输入、打开、验证等操作,支持的浏览器包括IE、Firefox、Safari、Chrome、Opera等。与requests库不同的是,selenium库是基于浏览器的驱动程序来驱动浏览器执行操作的。且浏览器可以实现网页源代码的渲染,因此通过selenium库还可以轻松获取网页中渲染后的数据信息。

二、使用selenium库前的准备

1、了解selenium库驱动浏览器的原理

(1)、WebDriver 协议

Selenium 使用 WebDriver 协议与浏览器进行通信。WebDriver 是一个基于 HTTP 的协议,定义了与浏览器交互的命令和响应格式。每个浏览器(如Chrome、Firefox、Safari等)都有自己的 WebDriver 实现(如ChromeDriver、GeckoDriver等),这些实现负责将 WebDriver 命令转换为浏览器能够理解的指令。

(2)、 浏览器驱动(Browser Driver)

浏览器驱动是一个独立的可执行文件,它充当浏览器和 Selenium 之间的桥梁。每个浏览器都有对应的驱动程序:

  • ChromeDriver:用于控制 Google Chrome 浏览器。

  • GeckoDriver:用于控制 Mozilla Firefox 浏览器。

  • SafariDriver:用于控制 Apple Safari 浏览器。

  • EdgeDriver:用于控制 Microsoft Edge 浏览器。

浏览器驱动程序会启动一个本地服务器,监听来自 Selenium 的请求,并将这些请求转换为浏览器能够执行的操作。

(3)、 Selenium 客户端库

Selenium 客户端库(如 selenium Python 库)提供了编程接口,允许开发者通过代码发送 WebDriver 命令。开发者可以使用这些库来编写脚本,控制浏览器执行各种操作,如打开网页、点击按钮、填写表单等。

(4)、 工作流程

以下是 Selenium 驱动浏览器的基本工作流程:

  1. 启动浏览器驱动:Selenium 客户端库会启动浏览器驱动程序(如 ChromeDriver),并建立一个连接。

  2. 创建浏览器实例:通过 WebDriver 协议,Selenium 客户端库会请求浏览器驱动创建一个新的浏览器实例。

  3. 发送命令:开发者通过 Selenium 客户端库发送各种 WebDriver 命令(如 driver.get("https://example.com")),浏览器驱动会将这些命令转换为浏览器能够执行的操作。

  4. 执行操作:浏览器执行相应的操作,如加载网页、点击按钮等。

  5. 获取结果:浏览器将执行结果返回给浏览器驱动,浏览器驱动再将结果返回给 Selenium 客户端库。

  6. 关闭浏览器:操作完成后,开发者可以关闭浏览器实例。

(5)、 跨浏览器支持

Selenium 的一个主要优势是它支持多种浏览器。开发者可以通过配置不同的浏览器驱动来实现跨浏览器测试。例如,使用 webdriver.Chrome() 可以控制 Chrome 浏览器,使用 webdriver.Firefox() 可以控制 Firefox 浏览器。

(6)、 自动化测试

Selenium 广泛用于自动化测试,特别是在 Web 应用程序的端到端测试中。通过编写脚本,开发者可以模拟用户在浏览器中的操作,验证应用程序的功能和性能。

2、安装WebDriver

选择使用的组合,以下三种方式安装一组即可

  • selenium + PhantomJS
  • selenium + chromedriver + Chrome
  • selenium + geckodriver + Firefox

火狐浏览器或者谷歌浏览器需要额外下载浏览器驱动器  

下载地址

chromedriver:CNPM Binaries Mirroricon-default.png?t=O83Ahttps://registry.npmmirror.com/binary.html?path=chrome-for-testing/

geckodriver:https://github.com/mozilla/geckodrive/releasesicon-default.png?t=O83Ahttps://github.com/mozilla/geckodrive/releases

PhantomJS:https://phantomjs.org/downloqd.htmlicon-default.png?t=O83Ahttps://phantomjs.org/downloqd.html  

 安装步骤(以谷歌浏览器为例)
(1)、查看自己的浏览器版本

点击浏览器右上角三个圆点-->帮助-->关于Google Chrome

 (2)、进入chromedriver下载地址

选择一个和自己浏览器版本比较近的(相同或略高于)

 

(3)、 把解压后的Chromedriver.exe文件拷贝到python安装目录的Scripts目录下

3、安装selenium库

(1)、在命令提示符窗口或终端执行以下的命令
pip install selenium
(2)、安装完成后使用以下命令查看库的信息
pip show selenium

三、使用selenium驱动浏览器

from selenium import webdriver
import time# 创建浏览器对象
brow = webdriver.Chrome()
# 输入要访问的地址
brow.get('http://www.baidu.com/')
time.sleep(10)
# 关闭浏览器
brow.quit()

 

四、总结

Selenium 是一个功能强大且灵活的工具,适用于各种Web自动化需求。无论是用于测试、抓取数据,还是自动化日常任务,Selenium 都能提供强大的支持。

 

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Vite+Vue3项目实战:组件化开发与通信指南

一、典型的ViteVue3项目结构 续上文成功创建Vue3项目的脚手架,通过visual Studio Code软件打开刚刚创建的文件夹,将会看到这样一个项目结构。 使用Vite构建Vue3项目时,项目结构通常遵循一定的组织规则,以保持代码的清晰和可维护性…

汽车免拆案例 | 2007款宝马650i车发动机偶尔无法起动

故障现象 一辆2007款宝马650i车,搭载N62B48B发动机,累计行驶里程约为26万km。车主反映,发动机偶尔无法起动,故障频率较低,十几天出现1 次,且故障出现时起动机不工作。 故障诊断  接车后试车,…

团队管理中如何做好目标管理

团队管理中的目标管理是确保团队高效运行的核心要素之一。 在目标管理中,清晰的目标设定、合理的资源分配、实时的跟踪与反馈机制是成功的关键。首先,设定SMART目标(具体、可衡量、可达成、相关性强、时间限定)能够有效聚焦团队的…

【力扣热题100】—— Day4.反转链表

你不会永远顺遂,更不会一直年轻,你太安静了,是时候出发了 —— 24.12.2 206. 反转链表 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head [1,2,3,4,5] 输出&…

【AWS re:Invent 2024】一文了解EKS新功能:Amazon EKS Auto Mode

文章目录 一、为什么要使用 Amazon EKS Auto Mode?二、Amazon EKS自动模式特性2.1 持续优化计算成本2.2 迁移集群操作2.3 EKS 自动模式的高级功能 三、EKS Auto 集群快速创建集群配置四、查看来自 API 服务器的指标五、EKS 相关角色权限设置六、参考链接 一、为什么…

记事本建java及java命名规范

1.桌面开发:c# 2. 记事本建java: 以class的名称(类名)为名,名称.java 编译jdk:javac 名称.java 调动运行jre : java 名称 查看名称.java里面的内容:cat 名称.java java 的命名规范 大驼峰(每个单词首…

过程管理系统(源码+文档+部署+讲解)

本文将深入解析“过程管理系统”的项目,探究其架构、功能以及技术栈,并分享获取完整源码的途径。 系统概述 过程管理系统是一款专为工业设计的综合管理平台,旨在通过集成各种管理流程和功能模块来提高管理效率和安全性。系统提供了从登录系…

期权懂|个股期权交割操作流程是什么样的?

期权小懂每日分享期权知识,帮助期权新手及时有效地掌握即市趋势与新资讯! 个股期权交割操作流程是什么样的? 一、行权申报: 期权买方在行权日通过其经纪商提交行权指令,表明其决定行使期权权利。 二、行权匹配&#xf…

智能仓储:入库业务流程介绍

01 入库流程 入库业务流程,常见过程是这样的: 创建PO单 > 创建到货清单 > 核对货物 > 入库质检 > 货物贴标签 > 上架 > 库存同步 1、创建PO单 po单指的是的采购订单,比如采购了一车货品,这车的货品可以理解…

MySQL并发控制(一):幻读

假设有如下表结构: CREATE TABLE t(id int(11) NOT NULL,c int(11) DEFAULT NULL,d int(11) DEFAULT NULL,PRIMARY KEY (id),KEY c (c) ) ENGINEInnoDB;insert into t values(0,0,0),(5,5,5),(10,10,10),(15,15,15),(20,20,20),(25,25,25); 问:如果执行…

Ubuntu22.04中mysql8 rpm安装

1、安装依赖 sudo apt update sudo apt -y dist-upgrade sudo apt -y install vim net-tools wget gcc make cmake lrzsz sudo apt -y install libmecab2 libjson-perl 2、下载rpm文件 https://dev.mysql.com/downloads/mysql/ https://cdn.mysql.com//Downloads/MySQL-8.0/m…

Intel 性能分析“全家桶” For HPC(一)

本系列是对于HPC应用性能分析涉及的主要方法论及Intel主流工具分享。理解这些方法论将有助于对性能分析结果的理解。同时方法论也可以推广到其他的硬件平台的分析上。除此之外后面也将介绍如何用Vtune, Advisor以及ITAC进行性能分析,以及在性能分析过程中这三种性能…

Qwen1.8B大模型微调流程

提示:本篇笔记是在微调大模型为法律相关模型的教程下记录的,参考的讲解视频在B站上,一搜微调大模型为法律大模型就有很多视频。 文章目录 1. 数据集1.1 数据下载1.2 数据格式转换 2. 模型训练2.1 安装依赖2.2 模型训练 3. 模型推理3.1 LoRA模…

第十六章 使用 iSCSI 服务部署网络存储

1. iSCSI 技术介绍 硬盘是计算机硬件设备中重要的组成部分之一,硬盘存储设备读写速度的快慢也会对服务器的整体性能造成影响。硬盘存储结构、RAID 磁盘阵列技术以及LVM 技术等都是用于存储设备的技术,尽管这些技术有软件层面和硬件层面之分&#xff0c…

【js面试题】JavaScript 中箭头函数与普通函数的深度剖析

在 JavaScript 编程的世界里,函数是极为重要的组成部分。而随着 ES6 的出现,箭头函数成为了 JavaScript 函数家族中的新成员。它与传统的普通函数有着诸多的不同之处,这些差异深刻地影响着我们编写代码的方式以及代码的执行逻辑。本文将对 Ja…

【漫话机器学习系列】Adaboost算法

Adaboost(Adaptive Boosting)是一种经典的集成学习方法,主要思想是通过将多个弱学习器(通常是简单模型,如决策树桩)加权组合,来提升整体模型的预测能力。Adaboost 是一种自适应的学习方法&#…

SQL靶场第四关

sql靶场第四关攻略 输入?id1页面正常 输入?id1发现页面也正常 输入?id1",页面异常,说明存在sql报错注入 在输入?id1" --页面还是报错 1.判断闭合点 我们需要找到闭合点,尝试在双引号后面加个) 输入?id1") --我们发现…

Trunk链路操作题

Trunk链路操作题 论证:

Alogrithm:三色棋

1. 说明 三色旗的问题最早由 E.W.Diikstra 所提出,他所使用的用语为 Dutch Nation Flag(Dijkstra 为荷兰人),而多数的作者则使用 Three-Color Flag 来称之。 假设有一条绳子,上面有红、白、蓝三种颜色的旗子&#xff0…

需要排序的子数组

题目描述 给定一个无序数组arr,求出需要排序的最短子数组长度 要求:O(N) 如输入:arr{2,3,7,5,4,6},返回4,因为只有{7,5,4,6}需要排序。 分析 以{2,3,7,5,4,6,8,9}为例: 前端小于最小波谷(3…